根据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'
...
}
但没有结果。数据未经过验证,并将其视为可以保存任何内容的任何类型属性
答案 0 :(得分:1)
实际上您似乎可以按照我提到的方式在模型定义JSON文件中定义子文档属性:
address:{
street: 'string',
city: 'string'
...
}
问题是这个匿名模型是使用no strict选项定义的,默认选项为false,因此也允许任何其他属性......
我还创建了一个关于这个问题的问题,以便在不创建单独的单独定义JSON文件的情况下轻松创建subdoc。