【问题标题】:NodeJS/Mongoose: Cannot Push ObjectID into Document ArrayNodeJS/Mongoose:无法将 ObjectID 推送到文档数组中
【发布时间】:2018-03-10 14:35:49
【问题描述】:

我正在创建一个post 文档,然后将其保存。保存后,我想获取已保存帖子的ID。然后我想将此 ID 插入到 "user"document 中的 array "posts" 中。

但是,问题是在保存帖子并获取回调"savedPost" 后,我无法将其 ID 推送到 "user" 文档中的 "posts" 数组中。它返回了"Cannot read property 'push' of undefined"

查看MongoDB时,可以看到"post"确实保存到了数据库中,所以问题似乎出在回调之后。我尝试在线搜索,但没有一个答案对我有帮助。

这里是代码。

NodeJS/猫鼬:

post.save(function(err, savedPost){
    if(err){
        console.log(err);
    } else {
        //problem seems to start here
        var postId = {id: 'savedPost._id'};
        user.post.push(postId);
        user.save();
    }
});

用户架构

var UserSchema  = new mongoose.Schema({
    posts: [
        {id: String}
    ],
});

【问题讨论】:

  • 你不应该使用update()
  • @HassanImam 这似乎有点令人困惑。你能告诉我怎么做吗?
  • 您的意思是user.posts 而不是user.post?注意末尾的s
  • 标记关闭,因为打字错误
  • 感谢您的指出。没注意到错别字。对此感到抱歉。

标签: node.js mongodb mongoose


【解决方案1】:

我认为你的回答有误 应该是user.posts 而不是user.post

但除此之外,请记住,对于没有帖子的用户,帖子可能是空的。 因此,如果数组为空且不存在,则应初始化数组。

user.posts=user.posts || [ ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2018-07-02
    • 1970-01-01
    • 2021-02-16
    • 2015-03-01
    • 2015-05-11
    相关资源
    最近更新 更多