Meteor 除了.findAndModify之外,我应该使用什么?

Meteor 除了.findAndModify之外,我应该使用什么?,meteor,Meteor,我有以下代码: var roomDoc = Rooms.findAndModify({ query: {name: roomName}, update: {$setOnInsert: {unixTimestamp: unixTimestampSeconds()}}, new: true, upsert: true }); 在得到一个.findAndModify未定义的错误后,我意识到Meteor没有实现.findAndModify 通过使用不同的查询是否有一种快速的方法来实现类

我有以下代码:

var roomDoc = Rooms.findAndModify({
  query: {name: roomName},
  update: {$setOnInsert: {unixTimestamp: unixTimestampSeconds()}},
  new: true,
  upsert: true
});
在得到一个
.findAndModify未定义的错误后,我意识到Meteor没有实现
.findAndModify


通过使用不同的查询是否有一种快速的方法来实现类似的功能?

单独执行
find()
upsert()

Rooms.upsert({name: roomName}, {$setOnInsert: {unixTimestamp: unixTimestampSeconds()}};
var roomDoc = Rooms.findOne({name: roomName});

这可能会因为两个db调用而稍微降低效率,但如果这让您感到困扰,您只需使用Rooms.rawCollection()为Mongo的
findAndModify()
编写自己的meteor包装器。

但是上面的答案解释了这一特定情况,在许多其他情况下,假定
findAndModify
是一种原子操作,例如可用于生成唯一ID:

Meteor似乎不会实现
findAndModify
的包装器,因为相应的票证已经关闭,但是社区提出了几种解决方案,这些解决方案已经在服务器端和客户端都可以使用:


您可以直接执行此操作,但语法略有不同

var roomDoc = Rooms.rawCollection().findAndModify(
  { name: name }, 
  [], 
  { $setOnInsert: {unixTimestamp: unixTimestampSeconds()} }, 
  { new: true, upsert: true }
)
更多信息请点击此处:


这就是我最后所做的,奇怪的是,我想现在还没有。