1

我已经使用 Meteor.bindEnvironment 包装器定义了一个回调函数,如 Meteor Async Guide中所述。我使用了包装器,以便这个异步回调可以使用 Meteor 集合。在回调中,我试图只插入一个名为“title”的属性的唯一值的文档。我找到了几个资源来演示 Mongo 的处理方式,但是 Meteor 尚未实现所需的功能(例如 findAndModify 或 find 的 upsert 选项)。

如果查询没有返回匹配的文档,我已经求助于对传入标题的值执行查询并插入新文档。但是,由于回调的异步性质,这会失败,并且重复项最终会被插入到集合中。

是否有 Meteor 或 Node.js 模式用于用锁包裹这样的关键部分?

谢谢!

4

1 回答 1

0

如果只有一个参与者(客户端或服务器)进行轮询,我看不出您将如何异步绕过您的“已收到”阻止列表,除非您的更新调用过于频繁。api中是否没有任何内容仅在时间戳后返回消息,或者仅订阅更改?

如果您有多个客户端,每个客户端都轮询一个公共外部源以获取更新,然后尝试同步到一个合并的公共集合,(您没有说,但会遇到您描述的问题),

通过标题 + 用户 ID 使每个流唯一。

您可能还需要客户端上的本地集合来跟踪客户端所看到的内容,如果您正在尝试审计跟踪,则在服务器上需要一个单独的集合。

于 2013-09-02T20:16:21.460 回答