ObjectID不存储十六进制值

时间:2015-06-17 16:21:59

标签: javascript node.js mongodb sails.js waterline

最初,我的Sails / Mongo将ObjectID存储在数据库中,如下所示:

"_id" : ObjectId("557077fb836bdee256004232")

不确定发生了什么变化或发生了,但现在新的记录存储如下:

"_id" : {
    "_bsontype" : "ObjectID",
    "id" : "UtÓ-Åß\u0010C&5",
    "generationTime" : 1434552692
}

这仅发生在6个开发者环境中。

我检查过的事情:

  • 从上周恢复到稳定提交,清除了node_modules,npm缓存等。重新安装并且没有运气。
  • 完全重新安装Node / npm / MongoDB以确保我使用最新的稳定版本...我的版本都与现有的开发环境相匹配,这些环境正常运行。

如果有任何特定内容可以提供帮助,我会非常乐意分享配置/日志。环境:节点0.12.4,npm v2.11.2,MongoDB shell v3.0.4。我已经调试了代码和所有内容,我非常确定它是我的环境所特有的,以及它如何与Mongo / Sails / Waterline / BSON交互。

我希望这更像是“嘿,我以前见过这个,这就是我解决它的问题”而不是实际的代码/调试问题!谢谢!

1 个答案:

答案 0 :(得分:2)

回答我自己的问题!

MongoDB的Brew安装似乎发生了一些愚蠢的事情。从http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/手动重新安装它然后恢复我备份的数据库似乎可以解决问题。

我仍然希望从代码/技术角度了解为什么我的环境突然决定开始返回12-byt BSON ObjectID而不是十六进制ObjectID ...但是直到那时希望简单的手动重新-install将帮助其他遇到这个奇怪问题的人!