Bookshelf.js:保存或更新多对多关系

时间:2018-02-12 05:19:48

标签: javascript node.js postgresql orm bookshelf.js

Bookshelf.js中的集合的attachupdatePivot方法似乎都处理多对多关系,但这些方法似乎都没有保存或更新(upsert)多对多关系许多关系项目。运行attach时我想更新已存在的记录,如果不存在则保存。不幸的是,attach总是添加记录,无论关系是否已经存在,这会导致重复的条目。如果我使用updatePivot,它似乎正确地更新了记录,但前提是它们存在。如果我第一次保存并使用updatePivot,则会抛出错误。我想知道是否存在一种方法或策略来正确地在Bookshelf.js中插入多对多关系。这是一个示例代码段,可以让您了解我尝试过的内容。

qq.save().tap(q => q.choice_responses().attach(cleanQuestions[qq.id]));
qq.save().tap(q => q.choice_responses().updatePivot(cleanQuestions[qq.id]));

1 个答案:

答案 0 :(得分:0)

您可以尝试使用不带任何参数的detach() method来先删除所有关系,然后再附加它们。