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 }
)
更多信息请点击此处:
这就是我最后所做的,奇怪的是,我想现在还没有。