我有一个架构Session
:
Session: {
_user: { type: mongoose.Schema.ObjectId, ref: 'User' }
}
我有一个创建会话的函数,我需要填充session._user。我的函数将用户作为第一个参数,因此我想做session._user = user;
,但这不起作用。
这是一个简化的代码段:
function createSession(user, callback) {
return Session.create({
_user: user.id
}, function(err, session) {
// session._user = user; does not work
// return callback(null, session);
// Workaround
return session.populate('_user', function(err, session) {
return callback(null, session);
});
};
答案 0 :(得分:0)
如果要自行填充像session
这样的Mongoose模型实例,必须首先通过调用toObject()
将其转换为普通JS对象,否则模式类型检查将阻止它工作:
function createSession(user, callback) {
return Session.create({
_user: user.id
}, function(err, session) {
session = session.toObject();
session._user = user;
return callback(null, session);
};
答案 1 :(得分:0)
Mongoose 4.0现在提供该功能 启动该功能的问题:https://github.com/Automattic/mongoose/issues/2075以及文档问题:https://github.com/Automattic/mongoose/issues/2884。