javascript 方法链接 - knex.js
javascript method chaining - knex.js
我是一名 PHP 开发人员,对于一个新项目,我决定使用 node.js 后端。所以我对此很陌生。
我正在使用 knex.js 来处理我的数据库连接和操作数据。
F.ex 我有以下查询:
let gastronomies = await knex
.from('user')
.innerJoin('profile', 'user.id', 'profile.user_id')
.where('user.status', 1);
如果客户端将附加变量传递给函数,则应将其用作另一个查询参数
if(args.lat) {
gastronomies = await knex
.from('user')
.innerJoin('profile', 'user.id', 'profile.user_id')
.where('user.status', 1)
.where('lat', 'like', args.lat); //there it is
}
我想链接这些方法,但它根本不起作用。这是我想出的:
let gastronomies = await knex
.from('user')
.select('*', {key: 'user.id'})
.innerJoin('profile', 'user.id', 'profile.user_id')
.where('user.status', 1);
if(args.lat)
gastronomies.where('lat', 'like', args.lat);
但是它说美食界没有一种叫做"where"的方法。有什么建议吗?
查看文档 - 您可以使用一个对象传入多个 where 子句:
.where({
first_name: 'Test',
last_name: 'User'
})
如果你想链接它,你应该等待 async/await
,因为它会触发对数据库的调用。
我会这样做:
const gastronomies = knex // no await here
.from('user')
.select('*', {key: 'user.id'})
.innerJoin('profile', 'user.id', 'profile.user_id')
.where('user.status', 1);
if(args.lat)
gastronomies.where('lat', 'like', args.lat);
const response = await gastronomies;
您还可以在此处使用 promises 检查问题的答案:Can I conditionally add a where() clause to my knex query?
我是一名 PHP 开发人员,对于一个新项目,我决定使用 node.js 后端。所以我对此很陌生。
我正在使用 knex.js 来处理我的数据库连接和操作数据。 F.ex 我有以下查询:
let gastronomies = await knex
.from('user')
.innerJoin('profile', 'user.id', 'profile.user_id')
.where('user.status', 1);
如果客户端将附加变量传递给函数,则应将其用作另一个查询参数
if(args.lat) {
gastronomies = await knex
.from('user')
.innerJoin('profile', 'user.id', 'profile.user_id')
.where('user.status', 1)
.where('lat', 'like', args.lat); //there it is
}
我想链接这些方法,但它根本不起作用。这是我想出的:
let gastronomies = await knex
.from('user')
.select('*', {key: 'user.id'})
.innerJoin('profile', 'user.id', 'profile.user_id')
.where('user.status', 1);
if(args.lat)
gastronomies.where('lat', 'like', args.lat);
但是它说美食界没有一种叫做"where"的方法。有什么建议吗?
查看文档 - 您可以使用一个对象传入多个 where 子句:
.where({
first_name: 'Test',
last_name: 'User'
})
如果你想链接它,你应该等待 async/await
,因为它会触发对数据库的调用。
我会这样做:
const gastronomies = knex // no await here
.from('user')
.select('*', {key: 'user.id'})
.innerJoin('profile', 'user.id', 'profile.user_id')
.where('user.status', 1);
if(args.lat)
gastronomies.where('lat', 'like', args.lat);
const response = await gastronomies;
您还可以在此处使用 promises 检查问题的答案:Can I conditionally add a where() clause to my knex query?