【问题标题】:Overriding Id in JSON object from a mongodb从 mongodb 覆盖 JSON 对象中的 Id
【发布时间】:2014-02-06 02:28:51
【问题描述】:

我正在努力覆盖我的一个模型中的属性名称。

我想将一个对象返回到前端(通过 JSON),其中包含一个名为 id 的字段。

现在问题来了,有一个名为 _id 的字段(由 mongo 生成),我似乎无法摆脱它。

我可以很好地覆盖 id,但仍然作为 _id 返回。

[Object]
0: Object
$$hashKey: "007"
_id: 123

我希望它是 [目的] 0:对象 $$hashKey:“007” 编号:123

我尝试了许多哈希操作,reject,except,以及循环和构造,但不能简单地重命名字段,或者为此删除它。

谢谢

【问题讨论】:

  • 你不能。 _id 字段在所有 MongoDB 文档中都是必需的(无论如何都是用户生成的文档)

标签: ruby-on-rails json mongodb hash hashmap


【解决方案1】:

最简单的方法是覆盖 as_json 方法并删除那里的哈希。

def as_json(*args)
   super.tap { |hash| hash["id"] = hash.delete "_id" }
end

【讨论】:

    【解决方案2】:

    “_id”字段在 MongoDB 文档中是必需的。 The manual says:

    如果文档没有指定 _id 字段,那么 MongoDB 会添加 _id 字段并为之前的文档分配一个唯一的 ObjectId 插入。大多数驱动程序创建一个 ObjectId 并插入 _id 字段, 但是如果驱动程序或 应用程序没有。

    所以你将无法解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多