我不知道我是不是只是盲目或者其他什么,但我怎么能做到以下几点:
我的User
模型与hasOne
模型的关系UserData
。我只想在UserData
的结果中直接使用User
的一个属性。
User
中的关系如下所示:
"relations": {
"userData": {
"type": "hasOne",
"model": "UserData"
}
}
User
中的默认范围:
"scope": {
"include": "userData"
}
一个User
的结果是:
[
{
"id": 5,
"email": "example@example.com",
"name": "Example",
"userData": {
"id": 5,
"birthdate": "1971-09-06T00:00:00.000Z"
}
}
]
但我想要的是:
[
{
"id": 5,
"email": "example@example.com",
"name": "Example",
"birthdate": "1971-09-06T00:00:00.000Z"
}
]
我怎么能做到这一点?
修改
两个模型定义:
ChiliUser
:
{
"name": "ChiliUser",
"base": "ChiliUserData",
"idInjection": true,
"options": {
"validateUpsert": true,
"mysql": {
"table": "person"
}
},
"properties": {
"id": {
"type": "number"
},
"email": {
"type": "string"
},
"password": {
"type": "string"
},
"vorname": {
"type": "string"
},
"name": {
"type": "string"
},
"spitzname": {
"type": "string"
},
"strasse": {
"type": "string"
},
"plz": {
"type": "number"
},
"ort": {
"type": "string"
},
"geolat": {
"type": "string"
},
"geolng": {
"type": "string"
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
ChiliUserData
:
{
"name": "ChiliUserData",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true,
"mysql": {
"table": "person_data"
}
},
"properties": {
"id": {
"type": "number"
},
"person_id": {
"type": "number"
},
"birthdate": {
"type": "date"
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
答案 0 :(得分:1)
您使用的是内置User
型号吗?如果是,您可以使用UserData
使用base: "User"
模型对其进行扩展,并且基础架构可以根据需要进行扩展:
{
"name": "UserData",
"base": "User",
"properties": {}
...
}
但是,此设置意味着您在代码中使用UserData
而不是User
。由于内置的User
模型受阻,我建议使用Person
或Customer
之类的其他字词,在这种情况下它会如下所示:
{
"name": "Person",
"base": "User",
"properties": {
...extra user data properties only...
}
...
}
这样,只有Person
才会拥有所有额外的"用户数据"它上面的字段,但也包括User
内为node_modules/loopback/common/models/User.json
定义的所有字段/方法。如果您正在使用MySQL,则会使用Person
和User
中的字段组合创建Person
表。