【问题标题】:How to define embedded properties in Loopback Model definition JSON file如何在 Loopback 模型定义 JSON 文件中定义嵌入属性
【发布时间】:2016-09-01 14:39:07
【问题描述】:

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

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": {}
}

然后引用 User 的原始 JSON 定义如

address:{
    type:'Address'
}

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

我试过了

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

但没有结果。数据没有得到验证,它认为它是一个可以保存任何东西的任何类型属性

【问题讨论】:

    标签: json loopbackjs strongloop


    【解决方案1】:

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

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

    问题是这个匿名模型没有定义严格的选项,默认为false,所以任何其他属性也是允许的...

    我还创建了一个关于以某种方式修复的问题,以便在不创建单独的单独定义 JSON 文件的情况下轻松创建子文档。

    Github issue

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 2023-04-09
      相关资源
      最近更新 更多