mongoose模型可以更新Object Id字段吗?

时间:2014-11-26 04:44:01

标签: node.js mongodb mongoose

这是我的代码

setAssignee(req.payload.email, function(assignee){

    //assignee is now a Object Id that get from setAssignee function

    var value = {
        id : req.params.id,
        title : req.payload.title,
        description : req.payload.description,
        assignee : assignee._id,
        targetDate : req.payload.targetDate,
        updatedDate : new Date(),
    };
        var taskObj = new TaskModel(value);

        var query = { $set : value};

        taskObj.update({ id : req.params.id}, query, function(err){
            if(err) { return reply(err); };
            return reply({
                id : req.params.id,
                title : req.payload.title,
                description : req.payload.description,
                assignee : assignee,
                targetDate : req.payload.targetDate,
                updatedDate : new Date(),
            });
        });
    });
 };

setAssignee是一个回调函数,用于从其他模型获取objectId。我想在我的模型中的'受让人'字段中更改它。

这是var query log:

{ '$set': 
{ id: '10',
 title: 'task11124',
 description: 'description',
 assignee: 5471aad59c93d7dd010ce3c1,
 targetDate: '2014-11-29T20:15:34.000Z',
 updatedDate: Wed Nov 26 2014 11:23:05 GMT+0700 (ICT) } }

无法更新。我认为是因为受让人:5471aad59c93d7dd010ce3c1。 更新此objectId字段是否是正确的格式?

是否有关于受让人:5471aad59c93d7dd010ce3c1没有''(引用)?

或者我错过了什么?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

将字符串转换为ObjectId类型的对象:

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('5471aad59c93d7dd010ce3c1');