【问题标题】:Get or create in Meteor在 Meteor 中获取或创建
【发布时间】:2015-07-09 21:30:45
【问题描述】:

如何在 Meteor 中创建 get_or_create 函数(类似于 https://docs.djangoproject.com/en/1.8/ref/models/querysets/#get-or-create)?

我必须使用吗

var element = Elements.findOne({number: 32});
if (element) {
  var elementId = element._id;
} else {
  // override element
  element = Elements.insert({number: 32});
  var elementId = element._id;
}

// do something with elementId

好像不太方便。

我想知道 Meteor 或 MongoDB 是否已经像 Collection.upsert() 那样内置了一些东西。

【问题讨论】:

  • 也许这正是upsert: true 所做的,只是它不返回文档?

标签: javascript node.js mongodb meteor


【解决方案1】:

结帐 MongoDB findAndModify。以下是实现您所描述的示例。

collection.findAndModify({
  query: { _id: "someId" },
  update: {
    $setOnInsert: { foo: "bar" }
  },
  new: true,   // return new doc if one is upserted
  upsert: true // insert document if it does not exist
})

【讨论】:

  • 我正要评论这是最好的方法这个问题。但 Meteor 目前不支持。 .findAndModify 是一个可以改变行为的包。
  • Meteor 不支持的原因是什么?
猜你喜欢
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 2015-09-16
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多