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

Javascript 执行SELECT查询时未定义的绑定,javascript,node.js,knex.js,bookshelf.js,Javascript,Node.js,Knex.js,Bookshelf.js,我正在使用书架refresh方法来刷新模型,但我在这里遇到了一个奇怪的问题。我有两个表device和subscription,它们有一对一的关系。我有一个方法(让我们称之为foo),在这个方法中,我尝试刷新a订阅模型。现在,当我调用foo()时,有两种不同的场景 1 在这个场景中,我使用一个类似下面的subscription模型调用foo() { user_id: 10289, id: 1179, more columns... } { user_id: 10289, id: 11

我正在使用书架
refresh
方法来刷新模型,但我在这里遇到了一个奇怪的问题。我有两个表
device
subscription
,它们有一对一的关系。我有一个方法(让我们称之为foo),在这个方法中,我尝试
刷新
a
订阅
模型。现在,当我调用
foo()
时,有两种不同的场景

1

在这个场景中,我使用一个类似下面的
subscription
模型调用
foo()

{ user_id: 10289,
  id: 1179,
  more columns...
}
{ user_id: 10289,
  id: 1179,
  more columns...,
  device: {
     id: 17093,
     user_id: 10289,
     subscription_id: 1179,
     more columns...
  }
}
当我尝试刷新此
订阅
模型时,它会按预期工作,并且不会出现任何错误

2

在这个场景中,我首先获取
设备
以及
订阅
,比如
device.forge().fetch({withRelated:['subscription']})
。然后我调用
foo()
subscription
model,它看起来像这样

{ user_id: 10289,
  id: 1179,
  more columns...
}
{ user_id: 10289,
  id: 1179,
  more columns...,
  device: {
     id: 17093,
     user_id: 10289,
     subscription_id: 1179,
     more columns...
  }
}
当我尝试刷新
模型时,我得到一个错误

编译SELECT查询时检测到未定义的绑定:从“订阅”中选择“订阅”。*其中“订阅”。“id”=?和“订阅”。“id”=?限制?

出于某种原因,生成的查询在
where
子句中需要两个
subscription\u id
,其中一个是
undefined

我的问题是,为什么在第二个场景中,query有两个
订阅id
?当没有
设备
型号以及
订阅
型号时,为什么
刷新
会按预期工作


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

您使用的是什么版本的书架?@devius我使用的是0.10.4版本的书架。@devius请检查我同事在GitHub上打开的同一期-