Node.js プログラミング

【 Node.js 】SequelizeとNode.jsを使用したデータ取得の条件設定

Node.jsのSequelizeは、JavaScriptでSQLデータベースを操作するためのORM(Object-Relational Mapping)ライブラリです。

データベースからデータを取得する際に、WHERE句やORDER句、GROUP句、ATTRIBUTES句、LIMIT句、OFFSET句などの条件を指定することで、より柔軟なデータの抽出が可能になります。

Sequelizeを使用してデータ取得の設定条件を実際のコード例とともに解説します。

WHERE句

WHERE句は、特定の条件に基づいてデータをフィルタリングするために使用されます。

例:年齢が30歳以上のユーザーを取得する。

const { Op } = require('sequelize');

const usersAbove30 = await User.findAll({
  where: {
    age: {
      [Op.gte]: 30,
    },
  },
});

console.log(usersAbove30);

Opオブジェクトを使用して、比較演算子を指定します。
上記の例では、[Op.gte]は「Greater Than or Equal」(以上)を意味し、年齢が30以上のユーザーを取得します。

ORDER句

ORDER句は、結果の並び順を指定するために使用されます。

例:年齢の昇順でユーザーを取得する。

const usersOrderedByAge = await User.findAll({
  order: [
    ['age', 'ASC'],
  ],
});

console.log(usersOrderedByAge);

orderオプションには、並び替えたい属性と並び順を指定する配列を渡します。
上記の例では、['age', 'ASC']は「age」属性を昇順(小さい値から大きい値へ)で並び替えることを意味します。

GROUP句

GROUP句は、結果をグループ化するために使用されます。

例:年齢ごとにユーザーをグループ化して取得する。

const { fn, col } = require('sequelize');

const usersGroupedByAge = await User.findAll({
  attributes: ['age', [fn('COUNT', col('id')), 'count']],
  group: 'age',
});

console.log(usersGroupedByAge);

attributesオプションには、取得したい属性と、それに関連する集計関数を指定することができます。
上記の例では、COUNT関数を使用してidをカウントし、'count'というエイリアス名を付けています。
groupオプションには、グループ化したい属性を指定します。これにより、年齢ごとにユーザーがグループ化されます。

ATTRIBUTES句

ATTRIBUTES句は、取得する列を指定するために使用されます。

例:名前とメールアドレスのみを取得する。

const usersWithLimitedAttributes = await User.findAll({
  attributes: ['name', 'email'],
});

console.log(usersWithLimitedAttributes);

attributesオプションには、取得したい属性名を配列で指定します。
上記の例では、['name', 'email']を指定することで、名前とメールアドレスのみが取得されます。

LIMIT句

LIMIT句は、取得するレコードの数を指定するために使用されます。指定した数のレコードが取得され、それ以降のレコードは取得されません。

例:年齢が30歳以上のユーザーの中から上位2人を取得する。

const { Op } = require('sequelize');

const usersAbove30 = await User.findAll({
  where: {
    age: {
      [Op.gte]: 30,
    },
  },
  limit: 2,
});

console.log(usersAbove30);

上記の例では、limit: 2としているため、年齢が30歳以上のユーザーのうち上位2人のみが取得されます。

OFFSET句

OFFSET句は、取得を開始する位置のインデックスを指定するために使用されます。指定したインデックスのレコードから結果が取得されます。

例:年齢が30歳以上のユーザーの中で、上位2人をスキップして、その後の2人を取得する。

const { Op } = require('sequelize');

const usersAbove30 = await User.findAll({
  where: {
    age: {
      [Op.gte]: 30,
    },
  },
  limit: 2,
  offset: 2,
});

console.log(usersAbove30);

上記の例では、offset: 2としているため、年齢が30歳以上のユーザーのうち上位2人をスキップして、その後の2人のデータが取得されます。

おすすめ記事はコチラ

スマレジ テックファーム 1

スマレジ テックファーム で Webエンジニアとして勤めている tomoです。 今回は株式会社スマレジや私が所属している 「 スマレジ テックファーム 」についてPRしていきたいと思います。 スマレジ ...

2

FromBody 属性を使用して、 ASP.NET Core(.NET 6)のWebAPIでBodyパラメータのJSONを受け取る方法を解説します。 FromBody 属性 POSTやGETで呼び出さ ...

PC picture 3

ASP.NET Core(.NET 6)でCookie認証のタイムアウトを設定する方法を解説します。 Cookieの有効期限について Cookieには通常はタイムアウト(有効期限)を設定します。 基本 ...

4

ASP.NET Core(.NET 6)でクロスオリジンリクエスト ( CORS )を設定する方法を解説します。 簡単に クロスオリジンリクエスト ( CORS )とは何かについても少し解説したいと思 ...

-Node.js, プログラミング
-, ,