【问题标题】:MongoLab _id fieldMongoLab _id 字段
【发布时间】:2012-07-19 08:46:51
【问题描述】:

我遇到了一个奇怪的问题,我们在本地开发环境中使用 MongoDB,在 Heroku 上使用 MongoLabs 作为生产环境。现在问题出在 MongoLabs 处理 _id 字段的方式上。而不是使用 _id: '0x....' 它使用 _id: { $oid: '0x...'}。

这似乎导致了一些问题,因为某些代码在生产环境中无法按预期运行,但在我们的本地机器上运行良好。

我们在这个项目中使用 Nodes.js 和 Mongoose 和 Express。当它给我 undefined for model._id 时,我注意到了这个问题。

有没有办法强制两者保持一致?最好强制 MongoLab 使用 _id: '0x...'?

更新:我设法弄清楚为什么我得到未定义的 id。我们只是使用 cwd() 来要求一些模块,最终需要一个具有相似名称的不同模块,因为我们运行生产构建的 cwd 与开发构建略有不同。

但我仍然想知道为什么 MongoLabs 使用该 id 变体,以及尽管如此它仍然如何工作。

【问题讨论】:

  • Yagudaev- 您看到的是驱动程序、MongoLab UI 还是 REST API 的行为?谢谢 - 会
  • 使用 Heroku 上的 MongoLab UI 工具检查数据表明使用的 id 结构是 _id: { $oid: 'abc5f....' }。使用命令行mongo工具,它使用_id: 'abc5f....'。
  • 记录是如何添加的?使用 UI 还是驱动程序?
  • 记录是使用 Mongoose 添加的。我们还在本地使用它在 Ubuntu 和 Mac OS X 机器上进行开发。这只是数据库给它的默认 ID。

标签: database node.js heroku mongoose mlab


【解决方案1】:

我遇到了问题

如果我留在 php 中,按原样使用没有问题。

但是如果我从一个数组移动到json再到数组,它就不起作用了。

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 2012-10-10
    • 2015-03-25
    • 2021-07-03
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多