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上打开的同一期-