猫鼬验证不起作用

Mar*_*ark 5 javascript mongoose mongodb node.js

我使用的是 Monggose 4.8.1。我有一个简单的架构:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var Organisation = new mongoose.Schema({
  name: {
    type: String,
    required: [true, 'Organisation name must be provided'],
    unique: [true, 'Organisation name must be unique']
  },
  createdBy: { 
    type: String, 
    ref: 'User'
  },
  createdOn: {
    type: Date,
    "default": Date.now
  },
  availableUntil: {
    type: Date
  }
});

mongoose.model('Organisation', Organisation);
Run Code Online (Sandbox Code Playgroud)

我已将电子邮件 email@domain.com 保存在文档中。

现在我想再次尝试保存它并首先检查它是否有效使用validateAsync. 所以我预计会收到错误,因为电子邮件不是唯一的。

var organisation = new Organisation({
    name: 'email@domain.com'
});

var validResult = organisation.validateSync();

console.log('validResult is ', validResult);
Run Code Online (Sandbox Code Playgroud)

但 validResult 总是undefined...

编辑

我向我的架构添加了一个额外的属性:

  eggs: {
    type: Number,
    min: [6, 'Too few eggs'],
    max: 12
  }
Run Code Online (Sandbox Code Playgroud)

然后尝试保存eggs: 3,这产生了错误。奇怪的是,猫鼬验证似乎不会检查值是否唯一,即使在模式中设置时也是如此......

oiv*_*doo 0

标记。

您能否验证 mongodb 是否有您保存的模型的记录:db.organisations.find()

看起来如果您有价值,undefined则意味着该文档已按照以下文档通过了验证步骤validateSync()

  var err = doc.validateSync();
  if ( err ){
    handleError( err );
  } else {
    // validation passed
  }
Run Code Online (Sandbox Code Playgroud)