如何在Loopback模型定义JSON文件中定义嵌入属性

时间:2016-05-06 13:34:27

标签: json loopbackjs strongloop

根据Loopback文档,我们可以通过编程方式定义嵌入式文档属性,例如:

var UserModel = {
    firstName: String,
    lastName: String,
    address: {
      street: String,
      city: String,
      state: String,
      zipCode: String
    },
    ...
}

var AddressModel = {
    street: String,
    city: String,
    state: String,
    zipCode: String
};
var Address = ds.define('Address', AddressModel);
var UserModel = {
    firstName: String,
    lastName: String,
    address: 'Address',
    ...
}
// or address: Address
var User = ds.define('User', UserModel);

我的问题是我们是否也可以在模型定义JSON文件中执行此操作。

我发现你可以创建另一个JSON文件,然后在模块定义文件中直接引用它作为类型。 离。

{
"name": "Address",
"base": "Model",
"strict": true,
"idInjection": false,
"properties": {
  "id": false,
  "street": {
    "type": "string"
  },
  "city": {
    "type": "string"
  },
  "state": {
    "type": "string"
  },
  "zipCode": {
    "type": "string"
  },
  "country": {
    "type": "string"
  }
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}

然后引用它的原始JSON定义,例如

address:{
    type:'Address'
}

但我还没有找到如何在一个JSON定义中直接声明它而不需要不同的文件。 (与编程方式第一个示例相同)

我试过了

address:{
    street: 'string',
    city: 'string'
    ...
}

但没有结果。数据未经过验证,并将其视为可以保存任何内容的任何类型属性

1 个答案:

答案 0 :(得分:1)

实际上您似乎可以按照我提到的方式在模型定义JSON文件中定义子文档属性:

address:{
    street: 'string',
    city: 'string'
    ...
}

问题是这个匿名模型是使用no strict选项定义的,默认选项为false,因此也允许任何其他属性......

我还创建了一个关于这个问题的问题,以便在不创建单独的单独定义JSON文件的情况下轻松创建subdoc。

Github issue