Loopback,如何仅允许用户创建必须属于User的另一个模型的一个实例

时间:2015-12-15 09:09:27

标签: node.js acl loopback

我有一个Loopback API,用户是一个基类为User的模型。

我还有另一个名为参与者的模型。这表示已注册参加活动的用户。

我希望此参与者需要对用户(外键)的引用。我也想要它,以便用户只能创建一个参与者。最后,当用户创建参与者时,它必须引用用户自己的ID。我该怎么设置呢?

1 个答案:

答案 0 :(得分:0)

这似乎与我的标准一对一连接。为此,Loopback提供HasOneBelongsTo关系。

根据您的方案,您可以按如下方式定义Participant和MyUser:

MY-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实例创建另一个Participant实例,则会出现以下错误:

错误(500):HasOne关系无法创建多个参与者实例