2015-12-15 2 views
0

У меня есть Loopback API с пользователем, который является моделью с базовым классом User.Loopback, как только разрешить пользователю создавать один экземпляр другой модели, которая должна принадлежать пользователю

У меня также есть другая модель, называемая участником. Это представляет пользователя, который подписался на участие в мероприятии.

Я хочу, чтобы этот Участник потребовал ссылку на пользователя (внешний ключ). Я также хочу, чтобы пользователь мог создавать только ОДИН участник. Наконец, когда пользователь создает Участника, он должен ссылаться на собственный идентификатор пользователя. Как я могу это настроить?

ответ

0

Это похоже на стандартное соединение один к одному со мной. Loopback обеспечивает HasOne и BelongsTo отношения для этой цели.

Учитывая ваш сценарий, вы можете определить участника и MyUser следующим образом:

мой-user.json

{ 
    "name": "MyUser", 
    "base": "User", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": {}, 
    "remoting": { 
    "normalizeHttpPath": true 
    }, 
    "validations": [], 
    "relations": { 
    "participant": { 
     "type": "hasOne", 
     "model": "Participant", 
     "foreignKey": "userId" 
    } 
    }, 
    "acls": [], 
    "methods": {}, 
    "mixins": {} 
} 

participant.json

{ 
    "name": "Participant", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "properties": {}, 
    "validations": [], 
    "relations": { 
    "user": { 
     "type": "belongsTo", 
     "model": "MyUser", 
     "foreignKey": "userId" 
    } 
    }, 
    "acls": [], 
    "methods": {} 
} 

Затем вы можете создать участника для ваш MyUser вот так:

POST /my-users/{id}/participant 

Если вы пытаетесь создать еще один экземпляр Участника данного экземпляра MyUser, вы получите следующее сообщение об ошибке:

Error (500): HasOne отношение не может создать более одного экземпляра Участника