meteor - _id 在哪里生成(并检查)?

标签 meteor minimongo

数据库操作插入现在似乎是在插入后立即同步返回_id,因此这里不需要回调。

问题在于 _id 在哪里生成(和检查),因为这似乎是在 miniMongo 上完成的快速同步操作,但是没有某个集合的 _id 的完整列表,miniMongo 怎么可能检查_id是否重复??

最佳答案

在客户端上使用 Collection.insert 时,_id 是在客户端上使用 random uuid algorithm 生成的,因此看似完美的延迟补偿了客户端插入。

Collection.insert被实现为Meteor.method的一个特例,我们知道在客户端模拟运行的同时,一个对应的服务器触发操作时,客户端文档连同其本地生成的 _id 一起发送到服务器。

在服务器上,检查 _id 是否正确(真正唯一)并且服务器确认有效插入返回给客户端。

如果客户端生成的 _id 毕竟不是唯一的,那么插入将因“重复键错误”而失败(这可能发生在 0.001% 的时间内——概率甚至更低,你将不得不重新提交你的客户表格或其他任何东西)。

为了具体回答您的问题,_id 可以在客户端插入的情况下在浏览器中生成,但最终会在服务器上检查其有效性。

编辑:我最初假设 Meteor 试图从重复 key 错误中恢复并生成一个新 key 以避免重复并将其传播到客户端,我测试了用例并发现我错了,感谢@Tom Freudenberg感谢您指出这一点。

关于meteor - _id 在哪里生成(并检查)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30119616/

相关文章:

javascript - Meteor - 显示多个集合的提要

javascript - 如何判断 Meteor minimongo 何时与 mongo 服务器同步

mongodb - 合并两个集合时间戳数据并显示实时结果

javascript - 使用 account-ui 包创建用户时如何添加 user.profile?

javascript - meteor :使用嵌套的每个循环

meteor - 显示隐藏元素 meteor 方式

javascript - "Unrecognized logical operator: $in"Mongo.collection 更新

javascript - 使用动态字段名称更新数据

javascript - meteorjs Handlebars 自定义条件