javascript - 如何在嵌套字段中保存Mongo文档自己的_id?

标签 javascript mongodb meteor

此 Meteor 服务器代码尝试将新创建的属性 _id 复制到子文档中,但未能成功。

如何做到这一点?

编辑:
该代码使用 matb33:collection-hooks

MyCollection.after.insert(function(userId, doc) {
  if (doc.element === 'myString') {
    doc.values[0]._id = doc._id;
  }
});

最佳答案

改变 matb33:collection-hooksafter Hook 中的 doc 不会导致运行其他查询。如果您愿意,您将需要显式更新文档。

但是,在这种特殊情况下,如果您确实需要文档中重复的 _id,您可以生成一个 _id 并在插入文档时指定它。

您可能可以使用 MyCollection._makeNewID() 方法,因为这个 API 已经好几年没有改变了,并且它是 Mongo 包内部使用的。

const _id = MyCollection._makeNewID();
const doc = {
  _id,
  values: [
    {
      _id,
      ...
    }, {
      ...
    }
  ]
};

MyCollection.insert(doc);

关于javascript - 如何在嵌套字段中保存Mongo文档自己的_id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38067896/

相关文章:

node.js - mongodb 连接错误导致 kubernetes pod 挂起并重新启动 pod 修复该问题

javascript - 单击除特定元素的特定元素之外的正文

javascript - 如何使用reactjs为主题创建上下文?

javascript - 谷歌图表将折线图的笔划宽度设置为空

node.js - 查询 MongoDB 嵌套字段

java - 单元测试中的 Mongock (Mongobee) 和 Spring Boot

meteor - 未捕获的类型错误 : Object #<Object> has no method 'publish'

mongodb 获取最后插入的文档

templates - 如何获取 Meteor 模板中的 _id 值

javascript - 无法让 Chrome 存储加载任何内容