Angularjs 循环多对多关系混乱
我试图在环回应用程序中定义与Lead和Tag模型的多对多关系 Lead.jsonAngularjs 循环多对多关系混乱,angularjs,loopbackjs,angular-loopback,Angularjs,Loopbackjs,Angular Loopback,我试图在环回应用程序中定义与Lead和Tag模型的多对多关系 Lead.json "relations": { "tags": { "type": "hasAndBelongsToMany", "model": "Tag" } } Tag.json "relations": { "leads": { "type": "hasAndBelongsToMany", "model": "Lead" } } 现在我想给我
"relations": {
"tags": {
"type": "hasAndBelongsToMany",
"model": "Tag"
}
}
Tag.json
"relations": {
"leads": {
"type": "hasAndBelongsToMany",
"model": "Lead"
}
}
现在我想给我的lead模型添加一个标记,我的angularService执行这个方法
this.addTag = function (id, tag) {
if (tag.id) {
return Lead.tags.link({
id: id,
fk: tag.id
}).$promise
} else {
return Lead.tags.create({
id: id
}, tag).$promise
}
};
第一次呼叫按预期工作,这将为我现有的潜在客户添加新标签
Lead.tags.create({id: 1}, {name: 'NewTag'}); //leadId = 1, tagId = 0 (new Tag) indeed there is no ID field, it's just for simplicity
现在我想给我的新潜在客户添加相同的标签
Lead.tags.link({id: 2, fk: 1}); //leadId = 2, tagId = 1 (existing Tag)
但这次环回抛出错误:LeadTag.id的重复条目
不知道如何将现有标签添加到新潜在客户。例如,确实存在文档,并且有一个名为
assembly.parts.add(part, function(err) {});
但是我的lead服务没有这个lead.tags.add
方法
根据源代码,Lead.tags.link如下所示
// INTERNAL. Use Lead.tags.link() instead.
"::link::Lead::tags": {
params: {
'fk': '@fk'
},
url: urlBase + "/leads/:id/tags/rel/:fk",
method: "PUT"
},
// INTERNAL. Use Lead.tags.unlink() instead.
"::unlink::Lead::tags": {
params: {
'fk': '@fk'
},
url: urlBase + "/leads/:id/tags/rel/:fk",
method: "DELETE"
}
有什么想法吗?谢谢我想说清楚,当您使用
Lead.tags.add()
时,您是在实例上还是在模型本身上这样做的?add()
方法需要位于lead的实例上。。。比如:Lead.findById(13,函数(err,instance){instance.tags.add(someTagInstance,…)})代码>var lead=lead.findById({id:1,筛选器:{include:'tags'})
在lead.tags中没有add
,因为它是一个数组,在前端是正确的。在服务器上,我认为有一个方法。您要做的第一件事是使用debug strings()运行服务器,以获取有关错误的更多信息。尝试DEBUG=strong远程处理:*节点。
另外,您的模型配置很好(我刚刚尝试过),angular进行的REST api调用也很好。我看到的唯一错误是id,请注意id开始是1,而不是0。因此,当您使用Lead.tags.add()时,NewTag
将具有ID 1,这只是为了清楚起见,您是在实例上还是在模型本身上这样做?add()
方法需要位于lead的实例上。。。比如:Lead.findById(13,函数(err,instance){instance.tags.add(someTagInstance,…)})代码>var lead=lead.findById({id:1,筛选器:{include:'tags'})
在lead.tags中没有add
,因为它是一个数组,在前端是正确的。在服务器上,我认为有一个方法。您要做的第一件事是使用debug strings()运行服务器,以获取有关错误的更多信息。尝试DEBUG=strong远程处理:*节点。
另外,您的模型配置很好(我刚刚尝试过),angular进行的REST api调用也很好。我看到的唯一错误是id,请注意id开始是1,而不是0。因此NewTag
将具有ID 1