📜  adonis count with where - Javascript (1)

📅  最后修改于: 2023-12-03 14:59:11.957000             🧑  作者: Mango

Adonis.js 中的 Count 和 Where

Adonis.js 是用于构建 Node.js Web 应用程序的 MVC 框架。在 Adonis.js 中,有两个非常常用的方法:count()where()count() 方法用于计算给定表中满足特定条件的行数,而 where() 方法用于与数据库中的数据进行筛选。在本文中,我们将深入了解如何在 Adonis.js 中使用这两个方法。

安装 Adonis.js

在开始之前,请确保已经在您的系统中安装了 Node.js 和 npm。如果没有,请按照官方文档中的指示进行安装:https://nodejs.org

要安装 Adonis.js,请运行以下命令:

npm i -g @adonisjs/cli
连接到数据库

在使用 count()where() 方法之前,我们需要先连接到数据库。Adonis.js 支持多种类型的数据库,比如 MySQL、PostgreSQL、SQLite 等。

在这个例子中,我们将连接到 SQLite 数据库。请确保您已经在您的项目目录下安装了 sqlite3 模块:

npm i --save sqlite3

然后打开 .env 文件并添加以下内容:

DB_CONNECTION=sqlite
DB_DATABASE=./my_database.sqlite

这意味着我们将使用 SQLite 数据库,并将数据库文件存储在根目录下的 my_database.sqlite 文件中。

创建模型和迁移

现在,我们需要创建一个模型和迁移,以便我们可以与数据库进行交互。运行以下命令来创建一个名为 User 的模型和迁移:

adonis make:model User -m

这将创建一个 User.js 文件和一个名为 xxxxxx_create_users.js 的迁移文件。

xxxxxx_create_users.js 迁移文件中,我们将定义 users 表的结构。打开文件并将以下内容添加到 up() 方法中:

this.create('users', (table) => {
  table.increments('id')
  table.string('username').unique()
  table.string('email').unique()
  table.string('password')
  table.timestamps()
})

这将创建一个 users 表,包含 idusernameemailpasswordtimestamps 字段。

现在,我们需要运行迁移并将表设置为模型:

adonis migration:run
const User = use('App/Models/User')
Count 方法

count() 方法用于计算给定表中满足特定条件的行数。默认情况下,count() 返回的是整个表的行数。要计算仅满足特定条件的行数,我们可以在 count() 方法中传入一个 where 子句。

以下是一个例子:

const allUsers = await User.query().count()
console.log(allUsers[0]['count(*)']) // 输出表中所有用户的数量

const activeUsers = await User.query().where('is_active', true).count()
console.log(activeUsers[0]['count(*)']) // 输出表中所有已激活用户的数量

在上面的代码中,我们首先使用 count() 方法获取 users 表中的所有行数,然后使用 where() 方法计算仅满足 is_active = true 条件的行数。在执行查询之后,我们可以访问结果数组中的 count(*) 键来获取行数。

Where 方法

where() 方法用于与数据库中的数据进行筛选。可以使用多个 where() 子句来对表中的数据进行更复杂的筛选。

以下是一个例子:

const users = await User.query()
  .where('username', 'like', 'joh%')
  .orWhere('email', 'like', 'joh%')
  .orderBy('created_at', 'desc')
  .limit(10)
  .fetch()

在上面的代码中,我们使用 where() 方法对 users 表进行筛选,以查找包含用户名或电子邮件地址以 joh 开头的前 10 个用户。我们还使用 orderBy() 方法按照 created_at 字段的值进行倒序排序。

结论

在本文中,我们介绍了 Adonis.js 框架中的两个非常常用的方法:count()where()。使用这两个方法,我们可以轻松地从数据库中获取我们需要的数据。如果您还没有使用 Adonis.js,我强烈建议您尝试一下!