我需要修改现有查询,该查询会提取带有相关项的模型实例,以根据提供的搜索字词或提供的ID来动态更改where
子句。
如果我修改下面的原文:
return db.model('Users').where('id', userId)
.fetch({withRelated: [
'userNames.userMessages',
{
...
},
]}).then(function(user) {
对此,我收到错误 db.model(...)。fetch不是函数
var query = db.model('Users')
.fetch({withRelated: [
'userNames.userMessages',
{
...
},
]});
if (userId) {
query.where('id', userId);
} else if (searchTerm) {
query.where('name', 'like', '%' + searchTerm + '%');
}
query.then(function(user) {
答案 0 :(得分:2)
fetch()
需要由new
,forge()
创建的model instance或其他一些查询的结果。仅db.model('Users')
就像一个“类”,只有Model static methods可用。
因此,动态查询的一种可能解决方案可能是:
var query = db.model('Users')
.collection()
.query(function(qb) {
if (userId) {
qb.where('id', userId);
} else if (searchTerm) {
qb.where('name', 'like', '%' + searchTerm + '%');
}
})
.fetch({withRelated: [
'userNames.userMessages',
{
...
},
]});
query.then(function(user) {