回送3中的标签关系

时间:2018-11-19 13:35:30

标签: sql model nosql foreign-keys loopbackjs

在环回中如何创建标签? 例如有项目

{
  id,
  name
}

,并且具有类似模型的标签集合 现在,该项目需要具有多个标签,并且同一标签可以在多个项目中使用。

例如,在创建项目时,用户可以键入已经存在的标签或新标签,然后将其添加到项目中。

在环回框架中找不到我需要的确切关系。你怎么做到的?

1 个答案:

答案 0 :(得分:1)

TLDR

  1. CREATE TABLE ProjectTag (id AUTO INCREMENT PRIMARY KEY, project_id INTEGER, tag_id INTEGER);

  2. $ lb relation Project has and belongs to many Tag

  3. POST localhost:3000/api/Project

  4. POST http://localhost:3000/api/Projects/{ProjectId}/Tags

第一步是创建将Projects链接到Tags的表。

第二个在回送中创建关系并修改您的Project.json relations

第三个创建新项目

第四个为该项目创建一个新标签。 REST资源管理器中还有很多其他选项。

编辑

要添加已经存在于项目中的标签,请使用PUT /Projects/{PROJECT_ID}/Tags/rel/{TAG_ID}

详细信息

https://loopback.io/doc/en/lb3/HasAndBelongsToMany-relations.html https://loopback.io/doc/en/lb3/HasManyThrough-relations.html

hasAndBelongsToMany本质上与hasManyThrough相同,除了通过隐式创建贯通模型之外。

要实现HasManyAndBelongsToMany,必须存在一个表,该表相互映射。如果将关系添加到Project模型,它将被称为ProjectTag(我将定义一个环回模型,因为我不知道您的RDBMS。)

{
  "name": "ProjectTag",
  "properties": {
    "projectId": {
      "type": "Number"
    },
    "tagId": {
      "type": "Number"
    },
    "id": {
      "type": "Number"
    }
  }
}

您可以使用lb relation创建关系。这会将其放入您的模型之一。 (我的模型是stackoverflow1)

"stackoverflow2s": {
  "type": "hasAndBelongsToMany",
  "model": "stackoverflow_2",
  "foreignKey": "",
  "options": {
    "nestRemoting": true
  }
}
  

例如,在创建项目时,用户可以键入已经存在的标签或新标签,然后将其添加到项目中。

您必须首先创建项目POST localhost:3000/api/Project

然后,您可以使用POST http://localhost:3000/api/Projects/{ProjectId}/Tags将标签添加到该特定对象。