为什么Meteor.js使用自己的ID算法?
为什么不使用MongoDB的ObjectId()?
答案 0 :(得分:35)
如果您选择使用Meteor,Meteor对对象ID使用相同的方法:
Meteor.Collection.ObjectID()
与MongoDB的ObjectID
它位于Meteor.Collection
名称之下。它使用EJSON将普通JSON中的对象id保存到客户端。因为基本上有2个带有流星的数据库
<强> Minimongo 强>
这是客户端mongodb的一种缓存。当浏览器加载时,数据从服务器上的主mongodb下载到此。当进行更改时,它们会被推送到服务器。
服务器MongoDB
这是服务器上10gen的原始mongodb
因此,由于这两个数据库,Meteor需要在Meteor.Collection
中包含mongodb功能,并允许您在客户端和服务器上使用相同的代码。
默认情况下,meteor不会使用对象ID,它会使用一些随机的字母数字文本。这样做是为了让您可以轻松地在您的html属性中的URL和ID中使用ID。
如果您使用new Meteor.Collection.ObjectID()
,您将获得一个ObjectID
对象,该对象将在服务器端使用mongodb的ObjectID规范。对象ID中的时间戳值不会被阻止,但这不应该造成任何伤害。
答案 1 :(得分:5)
自0.9.1 Meteor建议使用Mongo.ObjectID
代替Meteor.Collection.ObjectID
。基本上两者都是一样的。
检查history.md以了解命名约定的更多更改。