环回多对多关系混乱

时间:2016-01-13 10:07:58

标签: angularjs loopbackjs angular-loopback

我尝试在Loopback应用程序中定义与我的Lead和Tag模型的多对多关系

Lead.json

"relations": {
    "tags": {
      "type": "hasAndBelongsToMany",
      "model": "Tag"
    }
}

Tag.json

"relations": {
    "leads": {
      "type": "hasAndBelongsToMany",
      "model": "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)

但这次环回会引发错误:Duplicate entry for LeadTag.id

不知道如何将现有标记添加到新的潜在客户。确实存在文档,例如here,并且有一个名为

的方法
assembly.parts.add(part, function(err) {});

但我的主要服务没有此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"
    }

任何想法?
感谢

0 个答案:

没有答案