Loopback v3 关系用户模型和其他模型结构

Loopback v3 relation users model and other model structure

我有 Events 模型,这个模型有 Speakers 和 Atttees,Atttendees 和 Speakers 是应用程序中的用户。

如何使用 LoopBack 中的关系来实现?喜欢:与他的演讲者和与会者一起参加活动

以及如何将参加者分配给活动?

一个活动可能有 one/Many 位演讲者和许多与会者,因此活动关系应该如下所示

event.json

  "relations": {
    "speakers": {
      "type": "hasMany",
      "model": "Speaker",
      "foreignKey": ""
    },
    "attendees": {
      "type": "hasMany",
      "model": "Attendee",
      "foreignKey": ""
    }
  }

演讲者属于一个事件:

speaker.json

"relations": {
    "event": {
      "type": "belongsTo",
      "model": "Event",
      "foreignKey": ""
    }
  }

最后一个与会者属于一个事件

attendee.json

"relations": {
    "event": {
      "type": "belongsTo",
      "model": "Event",
      "foreignKey": ""
    }
  }

将关系放在上面将为您的资源管理器提供新的端点,现在您可以使用如下所示的 POST 方法将参与者分配给事件。

PS:不要创建参加者 ID,因为 idInjection 为 TRUE,所以它将自动创建,只需分配 eventId

{
  "name": "string",
  "id": "string",
  "eventId": "string"
}

Note that you don't have to create a foreign key since loopback will target the default id of each related model only if you need to use custom ones.


更新

要让它在内置的 USER 模型上工作,我们应该先扩展它。

要扩展用户模型,我们应该创建一个新模型:

  1. slc loopback:model
  2. 将其命名为 user(小写),因为 loopback 使用的是 User,或者选择任何其他名称作为 customUser 或其他名称。
  3. Select 你的数据源
  4. Select User 模型的基础 class 这将覆盖内置的 User 模型
  5. 通过 REST API 公开:(是或否)如您所愿

创建模型后,编辑 config-model。json 并禁用内置用户模型。

将此 属性 添加到用户:"public": false(这将禁止用户在资源管理器中显示)

"User": {
"dataSource": "MongoDs",
"public": false
}

event.json中添加与新用户模型的关系

"relations": {
    "users": {
      "type": "hasMany",
      "model": "user",
      "foreignKey": ""
    }
  }

添加关系 user.json 与事件模型

  "relations": {
    "event": {
      "type": "belongsTo",
      "model": "Event",
      "foreignKey": ""
    }

现在您可以将用户分配给事件。但是,要分配演讲者或与会者,您应该创建类似 "type" : { "type": "string"} 的类型字段,它可以是 "attendee" / "speaker"

要从您的事件模型中查找用户,请使用此过滤器:{include: 'users'} 在您的 find() 函数中。