在环回中如何创建标签? 例如有项目
{
id,
name
}
,并且具有类似模型的标签集合 现在,该项目需要具有多个标签,并且同一标签可以在多个项目中使用。
例如,在创建项目时,用户可以键入已经存在的标签或新标签,然后将其添加到项目中。
在环回框架中找不到我需要的确切关系。你怎么做到的?
答案 0 :(得分:1)
TLDR
CREATE TABLE ProjectTag (id AUTO INCREMENT PRIMARY KEY, project_id INTEGER, tag_id INTEGER)
;
$ lb relation
Project
has and belongs to many
Tag
POST localhost:3000/api/Project
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
将标签添加到该特定对象。