0
var userSchema = Schema({
  email: {
    type: String,
    unique: true,
    match: /^[a-z0-9._-]+@[a-z0-9.-]+\.[a-z]{2,4}$/,
    lowercase: true,
    trim: true
  },
  nickname: {
    type: String,
    trim: true,
    required: true
  },
  password: { type: String, required: true },
  url: { type: String, trim: true, default: '' },
  role: {
    type: String,
    enum: [ 'admin', 'reader' ],
    default: 'reader'
  },
  about: { type: String, trim: true },
  created: { type: Date, default: Date.now, required: true }
});

これをよりユーザーフレンドリーなものでカスタマイズしたいのですが、必要な一意のインデックスと列挙型の失敗に対してカスタムエラーメッセージを設定する方法がわかりません。どのようにできるのか?

4

1 に答える 1

2

必要なオプションでエラーメッセージを上書きすることはできないと思います。保存の時点ではなく、スキーマ内のメッセージをカスタマイズする必要がある場合は、次のようなカスタムバリデーターを作成するのが最善の策だと思います。

function createdValidator(created) {
  return (created !== undefined && created !== null);
}

....

new Schema({created: { type: Date, default: Date.now, validate: [createdValidator, "custom error message"] } });

アップデート:

ここのドキュメントによると、次のような複数の検証を行うことができます。

var multiple = [
  { validator: createdValidator, msg: "custom error message" },
  { validator: function(created){ return true;}, msg: "You'll never see me" }
];

new Schema({created: { type: Date, validate: multiple }});
于 2013-01-04T18:23:53.117 に答える