从 mongodb 覆盖 JSON 对象中的 Id



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

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

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

我可以很好地覆盖 id,但仍然以_id的形式返回。

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

我希望它是 [对象] 0:对象 $$hashKey: "007" 编号: 123

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

谢谢

"_id"字段在MongoDB文档中是必需的。 手册说:

如果文档没有指定_id字段,则MongoDB将添加 _id字段,并为之前的文档分配唯一的对象 ID 插入。大多数驱动程序创建一个 ObjectId 并插入_id字段, 但是mongod将创建并填充_id如果司机或 应用程序没有。

因此,您将无法解决此问题。

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

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

最新更新