我正在尝试从MongoDB中提取Post对象。该帖子有一个作者字段,这是一个引用谁撰写博客帖子的ObjectID。提取博客帖子后,我想获取作者的用户名并替换帖子对象中的ID,然后再将其发送给客户。
运行代码时,正确的帖子在我登录时显示,并且正确的用户名在获取时显示,但我永远不能修改对象本身。
BlogController.getPost(id, (error, result) => {
if (error) res.send({success:false, message:error})
else {
var post = result
AuthController.getUserByID(post.author, (error, resultNested) => {
if (error) res.send({success:false, message:error})
else {
post.author = resultNested.username
console.log(post)
console.log(resultNested)
res.send({success:true, message:post})
}
})
}
})
我将包括控制台日志输出,以向您显示对象的结构以及我试图修改xist的值,但是新的StackOverflow UI使输入代码比过去更加麻烦。不知何故...
我希望post
对象的author
字段被修改,但是author字段仍然是ObjectID。
答案 0 :(得分:1)
我建议将作者的姓名存储在帖子模型中作为开始。 MongoDB被称为“基于文档的”数据库,因此,我想将集合中的每个记录都视为独立的“文档”。
我可以理解您要实现的关系模型的逻辑,但是由于MongoDB以JSON格式存储数据-人们可能会说存在一定的冗余空间。
我会推荐...
post{
author : string;
.
.
.
relUser : string;
}
其中relUser字段将是发布博客条目的用户的ID,我们将作者/用户名存储在author字段中。这样,您就可以通过每次通话获取更多信息来简化拨打电话的次数。