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

时间:2016-06-05 22:32:08

标签: javascript node.js mongodb mongoose

我们说我有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,它可以正常工作,但是当它是空白时则不行。

如果值中没有ObjectID,是否可以默认为null?

1 个答案:

答案 0 :(得分:1)

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

Mongoose: CastError: Cast to ObjectId failed for value "[object Object]" at path "_id"

空字符串将抛出强制转换错误。您没有从基于承诺的呼叫中捕获异常,因此您的路线已超时。

课程是捕获异常。就像你使用回调一样。