10

我想在我的模型中包含数组或集合,这是否可以使用水线(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
        }
    }

};
4

2 回答 2

3

我不知道这是否仍然是一个问题,但诀窍是既不发布为“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]"得到(类型)验证,但失败了


x-www-url 编码

在这种情况下,标题是这样的:

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

其结果与表单数据完全相同。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 填充最复杂的模型。例如

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"
         }]
       }
于 2013-11-14T21:18:36.987 回答
2

如果您正在寻找模型关联,它还没有(查看这个问题以获取建议的实现)如果您只想将数据数组存储在 DB 中,您可以将数组作为属性(参见文档以获取关于那)。我还没有测试过它,但我猜如果它没有匹配的结构,它会在将数组保存到数据库之前对其进行序列化。

于 2013-11-01T12:09:48.450 回答