我想在我的模型中有数组或集合,这是否可以使用waterline(mongoDB)?周围有其他选择吗?
示例:
{
name: Bundle,
col1 : {
name : anOtherModel,
subCol: {
text: aString,
...
}
},
col2 : {
name : anOtherModel,
subCol: {
text: aString,
...
}
}
}
到:
module.exports = {
attributes : {
name : {
type : 'STRING',
required : true
},
basicModules: {
type : 'ARRAY', // or 'COLLECTION'
required : false
}
}
};
答案 0 :(得分:3)
我不知道这是否仍然是一个问题,但诀窍是既没有POST作为“form-data”也没有“x-www-url-encoded”。你必须发布“原始”内容:
假设情况:
http://www.example.com/mymodel
您的标题可能如下所示:
POST /mymodel/create HTTP/1.1
Host: www.example.com
Cache-Control: no-cache
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="basicModules"
[1,2,3,4]
----WebKitFormBoundaryE19zNvXGzXaLvS5C
结果是字符串"[1,2,3,4]"
得到(type-)验证,失败
在这种情况下,标题是这样的:
POST /mymodel/create HTTP/1.1
Host: www.example.com
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
basicModules=%5B1%2C2%2C3%2C4%5D
与form-data具有完全相同的结果。由于basicModules
是字符串"[1,2,3,4]"
让它工作你的Header必须看起来像这样:
POST /mymodel/create HTTP/1.1
Host: www.example.com
Cache-Control: no-cache
{"basicModules":[1,2,3,4]}
可以产生您想要的结果,并且类型验证可以正常工作。
所以最后,您可以用JSON中的方式填充最复杂的模型。 e.g。
POST /mymodel/create HTTP/1.1
Host: www.example.com
Cache-Control: no-cache
{"user": {
"name": {
"first":"John",
"last":"Doe"
},
"age":25,
"pets":[{
"name":"Garfield",
"type":"cat"
},
{
"name":"Rudolph",
"type":"reindeer"
}]
}
答案 1 :(得分:2)
如果你正在寻找模型关联,它还没有(如果你想提出实现那么this issue)如果你只想在DB中存储数据数组,你可以将数组作为属性(请参阅the doc以获取参考。我没有对它进行过测试,但我想如果没有匹配的结构,它会在将数据保存到数据库之前对其进行序列化。