为什么对象值没有变化?

时间:2019-02-07 13:45:24

标签: node.js mongoose

我正在尝试从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。

1 个答案:

答案 0 :(得分:1)

我建议将作者的姓名存储在帖子模型中作为开始。 MongoDB被称为“基于文档的”数据库,因此,我想将集合中的每个记录都视为独立的“文档”。

我可以理解您要实现的关系模型的逻辑,但是由于MongoDB以JSON格式存储数据-人们可能会说存在一定的冗余空间。

我会推荐...

post{
 author : string;
 .
 .
 .
 relUser : string;
}

其中relUser字段将是发布博客条目的用户的ID,我们将作者/用户名存储在author字段中。这样,您就可以通过每次通话获取更多信息来简化拨打电话的次数。