数据库操作插入现在似乎是在插入后立即同步返回_id,因此这里不需要回调。
问题在于_id生成(和检查)的位置,因为这似乎是在miniMongo上完成的快速同步动作,但是没有某个集合的_id的完整列表,miniMongo的可能性如何检查_id是否重复?
答案 0 :(得分:5)
在客户端上使用Collection.insert
时,使用random uuid algorithm在客户端上生成_id
,因此看似完美的延迟补偿客户端插入。
Collection.insert
作为Meteor.method
的特例实现,我们知道客户端模拟在客户端运行的同时,会触发相应的服务器操作,客户端文档被发送到服务器及其本地生成的_id
。
在服务器上,检查_id
是否正确(真正唯一),服务器确认有效插入客户端。
如果客户端生成的_id
毕竟不是唯一的,那么插入将失败并出现“重复键错误”(这可能发生在0.001%的时间 - 概率甚至更低,你会必须重新提交您的客户表格或其他)。
要专门回答您的问题,如果客户端插入,可以在浏览器中生成_id
,但最终会在服务器上检查其有效性。