【发布时间】:2014-03-13 02:09:42
【问题描述】:
我不明白为什么我的模型实例没有被覆盖:
schema.pre('validate', function(callback: any, done: any){
if(!this.status){
var Type = __Dao.getModel('type');
Type.findOne({name: 'processing', 'category.name': 'languageStatus'}, function(err, role){
if(err){
callback(err);
}else{
console.log('this: '+JSON.stringify(this))
this.status = role;
callback();
}
});
}
done();
});
控制台:
this: {"domain":null,"_events":{},"_maxListeners":10,"emitted":{"complete":[{"code":"a","name":"processing","_id":"52fd475c699127802d298665"}]},"ended":false}
// 其他console.log
{消息:'验证失败',
名称:'验证错误',
错误:
{ 状态:
{ 消息:'路径 status 是必需的。',
名称:'ValidatorError',
路径:'状态',
类型:'必需',
值:未定义 } } }
我检查了,我的role 不是空的。
我认为我的错误在this.status = role; 上,this 已定义,但看起来我没有以好的方式覆盖它。
有什么建议吗?
【问题讨论】:
-
设置状态后不需要也保存吗?第二个日志行什么时候发生?
-
当我尝试在我的
app.js中保存一个假模型时,会出现第二行。我应该保存它吗?如何?这不是模型,不是吗?只需致电this.save()?我以为我只需要更改对象,它就会自动保存。我真的不知道。
标签: node.js mongodb mongoose middleware