0

我目前有一个数据库(猫鼬),其架构定义为:

var CommentTableSchema = new mongoose.Schema({

    name: String,
    body: String,
    parentCommentID: String,
    depth: Number, // the depth of the comment to which it is nested.
});
CommentTableSchema.set('collection', 'comment');

我通过执行以下操作在我的数据库中保存了一条新评论:

var comment = mongoose.model('comment', CommentTableSchema);
        var currentComment = new comment({name: request.body.name, body: request.body.comment, parentCommentID: "" , depth: 1});
        currentComment.save(function (err, currentComment) {
            if (err) {
                console.log("saving error : " + currentComment);
            }
            else {
                console.log("saved!");
            }
        });

我将结果传递comment.find给我的 home.jade 文件。在玉文件中,我有以下几行(commentsTable 是结果comment.find

-each comment in commentsTable
    div
        -console.log("comment depth: " + comment.depth)
        if comment.hasOwnProperty('depth') 
            |has depth
        else
            |no depth

这会在我的浏览器页面上输出“无深度”。但是,该行在-console.log("comment depth: " + comment.depth)我的终端上为我提供了以下输出:

comment depth: 1
comment depth: 1
comment depth: 1

这是预期的。为什么翡翠无法读取我的depth会员?comment.name我在访问,comment.bodycomment._idhome.jade 文件时没有问题。

4

1 回答 1

1

在这个回调中

currentComment.save(function (err, currentComment)

currentComment 是一个猫鼬Document对象

听起来你想要的是简单的结果,而不是猫鼬包装的结果

我建议您在将对象传递给您的模型之前调用Document#toObject([options])此处引用的函数http://mongoosejs.com/docs/api.html#document_Document-toObject 。

同样,您应该lean在执行查找操作时查看该选项。指定时,猫鼬返回未包装的对象。

例如: http: //mongoosejs.com/docs/api.html#model_Model.findById

于 2013-10-21T18:45:29.113 回答