【发布时间】:2017-01-13 12:37:43
【问题描述】:
在Loopback documentation 中,关系的名称总是与存储它们的属性不同。例如:
{
"name": "Customer",
"base": "PersistedModel",
"idInjection": true,
"properties": {
"name": {
"type": "string"
}
},
"relations": {
"address": {
"type": "embedsOne",
"model": "Address",
"property": "billingAddress",
"options": {
"validate": true,
"forceId": false
}
}
...
}
注意在这种情况下address 关系具有billingAddress 的属性。当我们改用 address 的属性时,事情似乎就坏了。
有时很难想出一个任意的形容词来前置属性。例如,假设该关系与已称为 BillingAddress 而不是 Address 的模型相关。将关系和属性都命名为billingAddress 是很自然的。
例如:
{
"name": "Customer",
"base": "PersistedModel",
"idInjection": true,
"properties": {
"name": {
"type": "string"
}
},
"relations": {
"billingAddress": {
"type": "embedsOne",
"model": "BillingAddress",
"property": "billingAddress",
"options": {
"validate": true,
"forceId": false
}
}
...
}
您如何处理 Loopback 中的这种情况?
【问题讨论】:
-
不确定您面临什么样的问题,但我所做的只是将关系命名为与相关模型相同,除了在 camelCase 而不是 MixedCase 中。例如
CustomerAccount hasMany Project,关系称为project。反之亦然,在Project belongsTo CustomerAccount中,关系称为customerAccount。这可能不是您想要的,但它对我有用,所以也许它是一种选择。 -
如果我没记错的话,我们之前在序列化父模型时遇到了嵌入式模型未发出的问题。我认为这是因为数据
model.embedded覆盖了函数model.embedded() -
根据我的经验,没有。相关模型被视为新属性,因此如果您使用相同的名称,其中一个会丢失。
标签: loopbackjs