node.js - 当我在 adonis.js/node 中收到查询参数时,如何有条件地添加 where's?

标签 node.js adonis.js

实际上我有这个查询返回数据库中的所有用户:

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/

相关文章:

database - Adonis.js 尝试运行 adonisserve --dev 命令时出现错误

node.js - 从模型定义更新迁移文件的 NodeJS ORM 框架

mysql - AdonisJs Mysql 关系无法正常工作!每当我尝试从数据库中获取时都给出空数组

javascript - 如何在 mongodb-native findAndModify 中使用变量作为字段名?

node.js - 如何使 Node fs 与类异步/等待?

node.js - 将 GitHub 项目的分支发布到新的 NPM 模块,但保留与原始模块 merge 的选项?

node.js - NodeJS 如何发送带有原始十六进制的 TCP 数据包

javascript - 如何使用 Adonis 中的用户角色更新联结表

node.js - DynamoDB putItem ConditionExpression 无法匹配 event.identityId

javascript - AdonisJS - 如何根据 Antl Provider 的语言环境返回验证消息