执行SELECT查询时未定义的绑定

时间:2018-05-14 19:40:28

标签: javascript node.js knex.js bookshelf.js

我正在使用Bookshelf refresh方法来刷新模型,但我在这里遇到了一个奇怪的问题。我有两个表devicesubscription,它们有一对一的关系。我有一个方法(让我们称之为foo),我正在尝试refresh subscription模型。现在,当我打电话给foo()时,我有两种不同的情况。

1

在这种情况下,我使用foo()模型调用subscription,该模型看起来像这样

{ user_id: 10289,
  id: 1179,
  more columns...
}

当我尝试刷新此subscription模型时,它会按预期运行,但我不会收到任何错误。

2

在这种情况下,我首先与device一起获取subscription,如此Device.forge().fetch({withRelated: ['subscription']})。然后我用foo()模型调用subscription,看起来像这样

{ user_id: 10289,
  id: 1179,
  more columns...,
  device: {
     id: 17093,
     user_id: 10289,
     subscription_id: 1179,
     more columns...
  }
}

当我在此尝试refresh subscriotion模型时,我收到错误

Undefined binding(s) detected when compiling SELECT query: select "subscriptions".* from "subscriptions" where "subscriptions"."id" = ? and "subscriptions"."id" = ? limit ?

由于某些原因,生成的查询在subscription_id子句中需要两个where,其中一个是undefined

我的问题是为什么查询在第二种情况下有两个subscription_id?当没有refresh模型与device模型一起出现时,为什么subscription按预期工作?

非常感谢任何澄清这一点的帮助。谢谢。

0 个答案:

没有答案