如何创建课程并为其指定参考



我试图为一个用户分配一个练习,但我不确定我是否以正确的方式进行:这是我尝试的方法,这是我的用户模型:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const UserSchema= new Schema({
email: String,
password: String,
fullName: String,
});
module.exports = mongoose.model('User', UserSchema);

这是我的课程模式:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const CoursesSchema = new Schema({
name: String,
type: String,
assignedTo: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
});
module.exports = mongoose.model('Courses', CoursesSchema );

这是我试图用用户创建课程的方法

const createCourse = async (req, res) => {
try {

const user = await UserModel.find();
const course= new CourseModel({
name: req.body.name,
type: req.body.type,
});    
await CourseModel.findByIdAndUpdate(
{ _id: course._id },
{ $addToSet: { assignedTo: user } },
);  
await course.save();
res.json({
success: true,
courses: course,
});
} catch (err) {
res.status(500).json({
success: false,
message: err.message,
});
}
};

我试图只分配我尝试过{$addToSet: { assignedTo: user.fullName }}的用户的名称,但这不起作用我还在学习裁判,因为我是新手,谢谢。

只有当您试图将新对象推入数组时,才能使用$addToSet。

首先,您需要拥有分配课程的用户id。

所以,更新你的这行:

const user = await UserModel.find(); //with 
const user = await UserModel.findOne({some condition});

保存已分配使用以下代码尝试一次:

const createCourse = async (req, res) => {
try {

const user = await UserModel.findOne();
const course= new CourseModel({
name: req.body.name,
type: req.body.type,
assignedTo: user._id
});    
await course.save();
res.json({
success: true,
courses: course,
});
} catch (err) {
res.status(500).json({
success: false,
message: err.message,
});
}
};

最新更新