MongoDB& Mongoose:在创建引用文档之前,可以mongoose映射引用文档吗?

时间:2014-11-02 22:35:49

标签: node.js mongodb mongoose

我认为我的帖子标题有点模糊。让我澄清一下。

我有以下架构:

   var listSchema = mongoose.Schema({
            _owner: { type:ObjectId, ref: 'User' },
            title: String,
            description: String,
            creation_date: { type: Date, default: Date.now }
        });


        var taskSchema = mongoose.Schema({
            _taskList:   { type: ObjectId, ref: 'List' },
            title: String,
            description: String,
            creation_date: { type: Date, default: Date.now }
        });

    var List = mongoose.model('List', listSchema);
    var Task = mongoose.model('Task', taskSchema);

每个任务'引用'列表'。是否可以保存新的任务'引用'列表'该集合中尚未存在?例如:

 //assume I have a user.id 

    var NewList = new List({
                    _owner: user._id,
                    title: 'Test List',
                    description: 'List Description'
                });

    var NewTask = new Task({
                    _taskList : NewList, //ref to the document above (_id not created yet)
                    title: 'Task Title',
                    description: 'Task Description'

                });

   NewTask.save(function(err, task){
                ...
               });

这样的事情是可能的还是我需要保存列表然后保存任务?

非常感谢!

1 个答案:

答案 0 :(得分:0)

Mongoose实际上为新的doc客户端创建了_id值,因此即使在保存之前,您也可以访问_id NewList

所以你可以这样做:

var NewTask = new Task({
                _taskList : NewList._id, 
                title: 'Task Title',
                description: 'Task Description'
            });