30

为什么 Meteor.js 使用它自己的 ID 算法?

为什么不使用 MongoDB 的 ObjectId()?

4

2 回答 2

37

如果您选择使用 Meteor,则对对象 ID 使用相同的方法:

Meteor.Collection.ObjectID()和MongoDB的一样ObjectID

它只是在Meteor.Collection名称下。它使用 EJSON 将普通 JSON 中的对象 ID 保存到客户端。因为基本上有2个数据库有meteor

米尼蒙戈

这是客户端上的一种 mongodb 缓存。当浏览器加载时,数据从服务器上的主 mongodb 下载到这个。当进行更改时,它们会被推送到服务器。

服务器 MongoDB

这是服务器上 10gen 的原始 mongodb

因此,由于这两个数据库,Meteor 需要在其中包装 mongodb 功能,Meteor.Collection并让您在客户端和服务器上使用相同的代码。

默认情况下,meteor 不会使用对象 ID,它会使用随机字母数字文本。这样做是为了让您可以轻松地在 URL 中使用 ID 并在 html 属性中使用 ID。

如果您确实使用new Meteor.Collection.ObjectID(),您将获得一个ObjectID对象,该对象将在服务器端使用 mongodb 的 ObjectID 规范。对象 ID 中的时间戳值不会被保留,但这应该不会造成任何伤害。

于 2013-03-10T08:07:31.207 回答
5

由于 0.9.1 Meteor 建议使用Mongo.ObjectID而不是Meteor.Collection.ObjectID. 基本上两者是一样的。检查history.md以了解命名约定的更多更改。

于 2014-10-31T16:26:11.847 回答