【发布时间】:2016-09-20 16:09:24
【问题描述】:
我有一个 MEAN 堆栈应用程序。
在我的数据库中,一个文档有一个像这样的 mongo ObjectId:
{ "_id" : ObjectId("57e15b1009cb82cafafafd73"), "name" : "Hello", "artist_id" : "world", "year" : "2000" }
但是当我在前端加载文档时,_id 被转换为字符串,我的对象在登录浏览器时看起来像这样:
{ "_id" : "57e15b1009cb82cafafafd73", "name" : "Hello", "artist_id" : "world", "year" : "2000" }
烦人的是,当我想从前端修改我的数据库(更新或删除现有文档)时,我必须将 _id 从字符串转换为 ObjectId 以定位我数据库中的文档...
所以在我的节点应用程序中,我必须用new ObjectId(stringId) 系统地按摩_id,因为浏览器发送的Id 是字符串......
显然我错过了一些东西。 我怎样才能让事情变得更优雅?
【问题讨论】:
-
new ObjectId(stringId)没有任何问题。由于 JavaScript 中没有 ObjectId 类型,因此您需要使用 mongo 的 ObjectId 方法将其转换为一个。 -
ObjectId不是 JSON 中支持的类型,因此(必要的)转换为String。 -
@Molda 提到这是正常的,我使用 spring-data mongo 驱动程序并将我的类 ID 映射为 String,因为在 java 中没有 ObjectId 数据类型,驱动程序完成大部分工作,仍然查询时写
new ObjectId(id)很烦人。也许司机没有我们希望的那么成熟。
标签: angularjs node.js mongodb express