首页 > 解决方案 > 环回3中的标签关系

问题描述

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

{
  id,
  name
}

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

例如,在创建项目时,用户可能会键入已经存在的标签或新标签,这些标签应添加到项目中。

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

标签: sqlmodelnosqlforeign-keysloopbackjs

解决方案


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将标签添加到该特定对象。


推荐阅读