我有一个用户模式和一个任务模式,它们相互链接。 创建新任务时,正确的用户ID将存储在“作者”字段中。
这个最近创建的任务,我将其放入“用户”“任务”数组,以存储其ID引用的各个任务。
此后运行填充时,没有任何反应。目前,“任务”数组只是一个IDS数组,而不是包含实际任务内容的数组。
我想念什么吗?
谢谢您的时间
用户架构
const UserSchema = new mongoose.Schema( {
name: {
type: String,
required: true
},
password: {
type: String,
required: true,
trim: true,
unique: true
},
email: {
type: String,
required: true,
unique: true,
validate( value ) {
if ( !validator.isEmail( value ) ) {
throw new Error( "Email is unvalid" );
}
}
},
tasks: [ {
type: mongoose.Schema.Types.ObjectId,
ref: "Task"
} ],
tokens: [ {
token: {
type: String
}
} ]
} );
const User = mongoose.model( "User", UserSchema, "users" );
module.exports = User;
任务架构
const TaskSchema = mongoose.Schema( {
name: {
type: String,
required: true,
unique: true
},
description: {
type: String
},
completed: {
type: Boolean,
default: false
},
author: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
}
} );
const Task = mongoose.model( "Task", TaskSchema, "tasks" );
module.exports = Task;
创建新任务
router.post( "/api/tasks", auth, async ( req, res ) => {
const task = await new Task( {
_id: new mongoose.Types.ObjectId(),
name: req.body.name,
description: req.body.description,
author: req.user._id
} );
req.user.tasks.push( task );
req.user.save();
task.save( ( error ) => {
if ( error ) {
throw new Error( error );
}
if ( !error ) {
User.findOne( { email: req.user.email } ).populate( "tasks" ).exec( ( error, tasks ) => {
if ( error ) {
throw new Error( error );
}
} );
}
} );
res.send( task );
} );
此操作的输出只是用户文档中的一个数组,其中包含任务的ID,而不是任务的实际数据(例如名称,描述等)
我想要的是用户拥有其“任务”数组,并且在该数组内部是具有正确数据(例如任务名称,任务描述等)的单个任务。