这是我的代码
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没有''(引用)?
或者我错过了什么?
非常感谢您的帮助。
答案 0 :(得分:0)
将字符串转换为ObjectId类型的对象:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('5471aad59c93d7dd010ce3c1');