我试图为一个用户分配一个练习,但我不确定我是否以正确的方式进行:这是我尝试的方法,这是我的用户模型:
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,
});
}
};