我目前有一个数据库(Mongoose),其架构定义为:
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文件。在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
成员?我在home.jade文件中访问comment.name
,comment.body
和comment._id
没有问题。
答案 0 :(得分:1)
在此回调中
currentComment.save(function (err, currentComment)
currentComment是一个猫鼬文档对象
听起来你想要的是简单的结果,而不是猫鼬包裹的结果
我建议您在将对象传递给模型之前调用http://mongoosejs.com/docs/api.html#document_Document-toObject中引用的函数Document#toObject([options])
。
在类似情况下,您应该在执行查找操作时查看选项lean
。指定时,mongoose返回非包装对象。