Sailsjs 是否可以构建更复杂的模型

2024-02-15

我想在我的模型中包含数组或集合,这对于水线(mongoDB)来说是可能的吗?周围还有其他选择吗?

example:

{
   name: Bundle,
   col1 : {
      name : anOtherModel,
      subCol: {
         text: aString,
         ...
      }
   },
   col2 : {
      name : anOtherModel,
      subCol: {
         text: aString,
         ...
      }
   }
}

to:

module.exports = {

    attributes : {

        name : {
            type : 'STRING',
            required : true
        },
        basicModules: {
            type : 'ARRAY', // or 'COLLECTION'
            required : false
        }
    }

};

我不知道这是否仍然是一个问题,但诀窍是既不要以“表单数据”的形式发布,也不要以“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]"


raw

为了让它工作,你的标题必须看起来像这样:

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"
         }]
       }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sailsjs 是否可以构建更复杂的模型 的相关文章