撇号 CMS:嵌入式文档的 ID 值

Apostrophe CMS: ID value for embedded docs

我已经编写了一个迁移脚本,运行 它使用 apostrophe-migrations 模块。我正在尝试更新一些现有文档并需要添加新的嵌入式文档。我可以看到撇号生成的嵌入式文档具有如下所示的 ID。

"_id" : "w958610296299634883"

这些ID是由什么组成的?现在我正在使用

self.apos.utils.generateId()

为嵌入式文档提供 ID,生成 MongoDB ObjectID。我怎样才能像上面那样生成 ID,这样我以后就不会遇到任何问题了? 或者我可以继续 MongoDB ObjectID?

首先,在服务器端,self.apos.utils.generateId() 不会生成 MongoDB ObjectID。你不应该在撇号文档中看到那些。它使用 Eric Elliot 的优秀 cuid 模块生成一个 id。

其次,您所指的 "embedded docs" 是撇号小部件。由于这些在浏览器端是 "born",因此它们的 ID 通常是在浏览器端生成的。那里的算法一点也不复杂,因为它不用于数据库中的独立文档;这足以防止小部件 ID 在单个文档中发生冲突:

'w' + Math.floor(Math.random() * 1000000000) + Math.floor(Math.random() * 1000000000);

但是,您不必以这种方式生成它们,而且我真的不推荐在服务器上使用它,因为您可以使用更好的东西并且不需要重新发明任何轮子。我会使用:

'w' + self.apos.utils.generateId();

这与浏览器端的操作保持一致,因为我们偶尔会使用这个字母来区分真正的文档 ID 和小部件 ID。 (cuid 以 c 开头。)

希望对您有所帮助!