我目前正在使用Padrino后端处理CouchDB应用程序。除了一些通用字符串之外,我还需要一个存储json的模型。该模型看起来像(伪代码):
name: 'UniqueName',
properties: { prop1: val1, prop2: val2 }
我无法预测properties
中要存储多少种类型的值。目前我使用通用模型:
padrino g model MyModel name:string, properties:string
在存储属性之前,我将json字符串化;加载时我从字符串创建json。我觉得我做错了。由于CouchDB已经准备好按原样存储json对象,我想知道是否有办法告诉Padrino的模型后一个字段是json,因为它本地存储?像:
name: 'UniqueName',
properies:
- prop1: val1,
- prop2: val2
我发现我可以创建一个单独的集合,并_id
从MyModel
引用它,但目前我想将它与name
一起存储。可能吗?
答案 0 :(得分:0)
没有必要对json进行字符串化,只需解析它并使用JSON标准库存储为数组。
original JSON data example:
json_data = [{ prop1: val1, prop2: val2, prop3: val3 }] #store the JSON data from wherever it came
parsed = JSON.parse(json_data.to_json) #store the parsed JSON data into an Array
foo = MyModel.find(1) #find whatever collection you wanna update
foo.properties = parsed
# => [{ prop1: val1, prop2: val2, prop3: val3 }]
foo.save
您的MyModel应如下所示:
{
"_id" : "your_generated_id",
"_rev" : "your_generated_rev",
"name" : "UniqueName",
"properties" : [
{
prop1: val1,
prop2: val2,
prop3: val3
}
]
}
记住CouchDB是“无模式的”。更多细节here。