以下に、Mongooseクエリを使用したExpressミドルウェア関数の例を示します。
const mongoose = require('mongoose');
const BlogPost = require('../models/BlogPost'); // BlogPostモデルのインポート
// ミドルウェア関数の定義
function myMiddleware(req, res, next) {
const query = BlogPost.find({}).sort('-createdAt').limit(1000); // ブログ投稿を取得するクエリ
query.exec((error, blogPosts) => {
if (error) {
return next(error);
}
// ブログ投稿を処理するコード
// ...
next();
});
}
module.exports = myMiddleware;
この例では、BlogPost
モデルを使用し、find()
メソッドを使用してブログ投稿を取得するMongooseクエリを作成しています。sort()
メソッドを使用して投稿を作成日時の降順でソートし、limit()
メソッドを使用して最大1000件の投稿を制限しています。
クエリを実行するためにexec()
メソッドを使用し、結果をコールバック関数で処理しています。エラーが発生した場合は、next()
関数を使用してエラーハンドラーに制御を渡すことができます。
このミドルウェア関数をExpressアプリケーションで使用するには、適切な場所でapp.use()
メソッドを使用して登録する必要があります。
const express = require('express');
const app = express();
const myMiddleware = require('./middlewares/myMiddleware'); // ミドルウェア関数のインポート
app.use(myMiddleware);
// 他のルートハンドラーの定義
// ...
app.listen(3000, () => {
console.log('サーバーがポート3000で起動しました');
});
上記の例では、myMiddleware
関数をapp.use()
メソッドを使用して登録しています。これにより、すべてのリクエストがこのミドルウェア関数を通過するようになります。
以上が、Mongooseクエリを使用したExpressミドルウェア関数の例です。これにより、ブログ投稿の取得や処理など、さまざまな操作を行うことができます。