以下に、Mongoose Unique Validatorを使って重複エラーを処理するシンプルで簡単な方法とコード例を示します。
- Mongoose Unique Validatorのインストール: まず、Mongoose Unique Validatorパッケージをインストールします。以下のコマンドを使用します。
npm install mongoose-unique-validator
- モデルにUnique Validatorを追加: Mongooseのスキーマ定義にUnique Validatorを追加します。以下は、例としてUserモデルのスキーマ定義です。
const mongoose = require('mongoose');
const uniqueValidator = require('mongoose-unique-validator');
const userSchema = new mongoose.Schema({
username: {
type: String,
unique: true, // ユニークなフィールドであることを指定
required: true
},
email: {
type: String,
unique: true, // ユニークなフィールドであることを指定
required: true
},
password: {
type: String,
required: true
}
});
userSchema.plugin(uniqueValidator); // Unique Validatorをプラグインとして追加
const User = mongoose.model('User', userSchema);
module.exports = User;
- 重複エラーのハンドリング: Mongoose Unique Validatorを使用すると、重複エラーが発生した場合にエラーメッセージをカスタマイズすることができます。以下は、エラーメッセージのカスタマイズ例です。
User.create({ username: 'john', email: '[email protected]', password: 'password' }, function(err, user) {
if (err) {
if (err.name === 'MongoError' && err.code === 11000) { // 重複エラーの場合
if (err.keyPattern.username) {
console.log('ユーザー名が既に使用されています');
} else if (err.keyPattern.email) {
console.log('メールアドレスが既に使用されています');
} else {
console.log('重複エラーが発生しました');
}
} else {
console.log('エラーが発生しました');
}
} else {
console.log('ユーザーが正常に作成されました');
}
});
上記の例では、User.create()
メソッドを使用して新しいユーザーを作成しています。もし重複エラーが発生した場合、エラーオブジェクトのname
とcode
プロパティをチェックして、重複したフィールド(ここではusername
とemail
)に応じてカスタマイズされたエラーメッセージを表示しています。
以上が、Mongoose Unique Validatorを使用してMongoDBの重複エラーを処理する方法の概要です。これにより、一意の制約を持つフィールドで重複エラーが発生した場合に、適切なエラーメッセージを表示することができます。