Mongoose异步模式验证不起作用

Sco*_*zer 6 mongoose

我有以下代码验证我的"时区"字段:

orgSchema.path('timezone').validate(function(value) {
  return Timezone.findOne({_id: value}, "_id", function (err, timezone) { return false; });
}, "Please provide a valid timezone");
Run Code Online (Sandbox Code Playgroud)

即使我在最里面的函数中添加"return false",该字段也总是在传递.我知道我错过了某个地方的回调 - 我会感激一些帮助.

Joh*_*yHK 9

一个异步验证需要接受这就是它必须调用提供验证的布尔结果回调第二个参数.

orgSchema.path('timezone').validate(function(value, callback) {
  return Timezone.findOne({_id: value}, "_id", function (err, timezone) { 
    callback(timezone != null);
  });
}, "Please provide a valid timezone");
Run Code Online (Sandbox Code Playgroud)