我有一个从mongodb检索到的商店对象, 我有兴趣使用值store.comments。
我记录了商店价值,它是:
store:{ _id: 57e246f73e63d635cce3d174,
__v: 0,
comments: 57e246f73e63d635cce3d177,
loc: [ 105.832321, 105.233272 ],
name: '24 store',
reportedFalse: [],
products: [],
currentRanking:
{ likes: 57e246f73e63d635cce3d175,
dislikes: 57e246f73e63d635cce3d176 },
timePosted: Wed Sep 21 2016 11:38:15 GMT+0300 (Jerusalem Summer Time) },
然后我记录了对象评论值的值 - result.comments :
store comments objectid: undefined
似乎当我尝试稍后通过评论值搜索它没有成功搜索它时。因为搜索返回null,虽然我看到在我的数据库中我在“comments”表/模式中有相应的对象具有相同的id ....
Comments.findById(commentsId,function(commentsErr,commentsArrObj){
...
cb(null, commentsArrObj._id);
}
我得到:
TypeError: Cannot read property '_id' of null
以下是我的架构的一部分供参考:
name: String,
comments: mongoose.Schema.Types.ObjectId, // each comment has a object id - responder, link curl? crud? to his profile, profile pic, date time.
timePosted : { type: Date, default: Date.now },
currentRanking: {
likes: mongoose.Schema.Types.ObjectId, // a votes document
dislikes: mongoose.Schema.Types.ObjectId // a votes document
},
答案 0 :(得分:1)
在您的架构中,您必须使用' ref'
comments: mongoose.Schema.Types.ObjectId,ref:'comments'(modal name of comments)
引用注释架构并使用填充注释来获取注释数据。
答案 1 :(得分:0)
控制错误对象" commentsErr"然后检查它是什么打印。如果您的commentsId类型更改为字符串,则可能是不从架构中查找注释的可能原因。尝试将其转换为ObjectId。
使用:
Comments.findById(new mongoose.Types.ObjectId(id),function(commentsErr,commentsArrObj){
cb(null, commentsArrObj._id);
})
建议:使用mongoose使用ref填充记录,这样您就不需要找到单独的查询来获取评论。