填充不填充,仅显示ID

时间:2019-09-16 14:19:31

标签: node.js mongoose

我有一个用户模式和一个任务模式,它们相互链接。 创建新任务时,正确的用户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,而不是任务的实际数据(例如名称,描述等)

我想要的是用户拥有其“任务”数组,并且在该数组内部是具有正确数据(例如任务名称,任务描述等)的单个任务。

0 个答案:

没有答案