使用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一样。