2014-01-16 18 views
0

我很努力地在我的模型之一中覆盖属性名称。从MongoDB中覆盖JSON对象中的Id

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

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

我可以重写id,但仍然返回为_id。

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

我想它是 [对象] 0:对象 $$ hashKey: “007” ID:123

我已经尝试了许多散列操作,拒绝,除,以及循环结束和构建,但不能简单地重命名该字段,或者为此删除它。

谢谢

+2

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

回答

0

最简单的方法是重写as_json方法并在那里删除哈希。

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

“_id”字段在MongoDB文档中是强制性的。 The manual says

如果文件没有指定_id字段,然后MongoDB的将增加 的_id场和前 插入指定的文档的唯一的ObjectId。大多数驱动程序创建ObjectId并插入_id字段 ,但是如果驱动程序或应用程序没有,则mongod将创建并填充_id。

所以,你将无法绕过这一工作。