实际上我有这个查询返回数据库中的所有用户:
async index({request}) {
const page = request.input('page')
const pageSize = request.input('pageSize')
const users = await User
.query()
.with('user')
.paginate(page, pageSize)
return users.toJSON()
}
如果我收到参数,我需要有条件地创建一种方法来放置此查询中的位置。
例如,如果我收到 request.input('username') 则在其中添加一个:
.whereRaw('username = %?%', [request.input('username')])
我在文档中没有找到解释如何有条件地创建 where's 的内容。有人可以解释一下吗?
尝试过:
async index({request}) {
const page = request.input('page')
const pageSize = request.input('pageSize')
const queryUsers = await User
.query()
.with('user')
.paginate(page, pageSize)
if(request.input('username'))
queryUsers.where('username = %?%', [request.input('username')])
return queryUsers.toJSON()
}
但我收到:
queryUsers.where is not a function
最佳答案
实际上如果你看一下文档的这一部分Query Builder您会发现,在运行 .fetch()
或在您的情况下运行 .paginate()
之前,您的查询不会运行。你的代码将是这样的:
async index({request}) {
const { page, pageSize } = request.get();
const queryUsers = User
.query()
.with('user')
if(request.input('username'))
queryUsers.where('username', '=', request.input('username'))
const users = await queryUsers.paginate(page, pageSize)
return users
}
关于node.js - 当我在 adonis.js/node 中收到查询参数时,如何有条件地添加 where's?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58608116/