使用MongooseJS填充文档,如果没有值

比方说,我有这样的User模型

 var userSchema = new Schema({ username : String, email : String, project : {type : String, ref : "Project"} }); 

和这样的User文档。

 { "_id" : ObjectId("56df56c58a4d47c83bf41603"), "username" : "user1", "email" : "email@example.com", "project" : "", "__v" : 1 } 

如果我做了以下,该页面从不加载。

 User.findById("56df56c58a4d47c83bf41603").populate("project").exec() .then(function(userObj) { res.render('user', { user : userObj }); }); 

它工作正常,如果有一个实际的ObjectID在那里,但不是当它是空白的。

有没有一种方法,我可以默认为null,如果没有ObjectID的值?

所以这个问题的答案在这里:

Mongoose:CastError:强制转换为ObjectId的path“_id”的值为“[object Object]”

一个空string会抛出一个转换错误。 你没有陷入从基于诺言的例外,所以你的路线是超时。

教训是陷入exception。 就像你使用callback一样。