0

我对 Rails 和 MongoDB 完全陌生。我将 Rails-3 和 MongoDB 与MongoMapper一起使用来创建一个小型应用程序,该应用程序存储一些数据并以 json 格式返回数据。客户端需要特定格式的 json。但我无法在保存的文档中创建相同的格式。

请求格式:

{"Name":"ABC","max":{"key":"KEY-1","value":"100"},"min":{"key":"KEY-2","value":"0"}}

父文档

class Story
 include MongoMapper::Document
 key :item,     String
 key :max,      
 key :min,      
end

我想要的是首先创建一个文档 {"key":"KEY-1","value":"100"} ,然后将该文档映射到父文档的最大键,同样将另一个文档映射到最小键。

我尝试了很多方法,但我无法使其工作。

另外,我想在返回客户端时从响应 JSON 中删除字段id (对象 id)。示例 JSON:

{"id":"51e64bce44ae8bf1fea3f78f","text":"Text 1","value":"Value 1"}

我怎样才能做到这一点?

更新 回答我自己的一个问题:“从 json 响应中删除非必填字段”

可以通过在 Model 类中定义 as_json 方法来完成。这将仅将字段“键”和“值”添加到生成的 json。

def as_json(options={}){
   :key  =>self.key,
   :value => self.value
}
4

1 回答 1

0

回答我自己的问题:我四处搜寻,找不到任何令人满意的答案。

在临时基础上,我为内部类创建了散列并分配了值。这是一个有点脏的临时解决方案。

我已将相同的问题发布到 mongomapper 组并得到了答案。在这里分享这个答案..

假设我有一个名为Inner的模型和另一个名为Outer的模型

one :max, :class_name => Inner

这会将Inner类对象嵌入到Outer类的max属性中

于 2013-07-22T11:59:51.570 回答