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

时间:2018-03-11 00:13:13

标签: node.js loopbackjs relation

我有活动模型,这个模型有演讲者和与会者,与会者和演讲者是应用程序中的用户。

我怎么能在LoopBack中用关系做到这一点?喜欢:与他的演讲者和与会者一起举办活动

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

1 个答案:

答案 0 :(得分:0)

活动可能有一个/多个发言者和许多与会者,因此事件关系应如下所示

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"
}
  

请注意,由于环回,您不必创建外键   仅在需要使用时才定位每个相关模型的默认ID   自定义的。

<强>更新

要使其适用于内置的 USER 模型,我们应该先扩展它。

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

  1. slc loopback:model
  2. 将其命名为user(小写)因为loopback正在使用User,或者只是选择任何其他名称作为customUser或其他任何名称。
  3. 选择您的数据源
  4. 选择用户模型的基类,这将覆盖内置的用户模型
  5. 根据您的意愿通过REST API公开:(是或否)
  6. 创建模型后,编辑 config-model.json 并禁用内置的用户模型。

    将此属性添加到User:"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()