2017-01-09 2 views
1

В Loopback documentation отношениях всегда имеют разные названия, чем собственность, которой они хранятся в Например:.Может ли имя отношения PersistedModel быть таким же, как имя свойства?

{ 
    "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?

+1

Не знаете, с какими проблемами вы сталкиваетесь, но то, что я делаю, просто называет отношение таким же, как родственная модель, за исключением camelCase вместо MixedCase. например 'CustomerAccount hasMany Project', отношение называется' project'. И наоборот, в 'Project принадлежит CustomerAccount', это отношение называется' customerAccount'. Возможно, это не то, что вы ищете, но это работает для меня, так что, возможно, это вариант. – Acapulco

+0

Если я правильно помню, мы ранее сталкивались с проблемами, когда внедренная модель не испускалась при сериализации родительской модели. Я думаю, это потому, что данные 'model.embedded' переопределяли функцию' model.embedded() ' – JBCP

+0

По моему опыту, нет. Связанная модель рассматривается как новое свойство, поэтому, если вы используете одно и то же имя, один из них будет потерян. –

ответ

1

С текущим состоянием loopback, я считаю, что это плохая идея. Я несколько раз пробовал это по разным типам отношений с теми же причинами, с которыми вы столкнулись, в большинстве случаев это что-то ломает, если оно работает. Глядя на документацию и петлю, я могу сказать, что отношения были разработаны таким образом, что имя отношения и свойство должны быть разными, даже если они работают, это может сломаться в будущем.

Для этих вещей я бы добавил постфикс к имени отношения, например billingAddressDetails или billingAddressRelation.

В то же время вы также можете открыть проблему в github, но я думаю, что в будущем все будет оставаться таким же.