猫鼬验证未调用

时间:2018-12-09 13:24:58

标签: node.js mongodb mongoose

我正在从本书中剔除猫鼬文档,即使是最简单的验证器也无法使用。我想念什么?我假设此验证程序将100%失败,但100%成功,并且我可以插入任何想要的用户ID。在此,我只是试图查看它是否被调用,并且在我期望它失败时总是通过插入。我已经尝试了许多在线上看到的变体和示例,在所有情况下似乎都没有调用验证器。

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

const profileSchema = new Schema({
created: {
    type: Date,
    default: Date.now
    },
userid: { 
    type: Schema.Types.ObjectId, 
    ref: 'user',
    validate: {
        validator: val => { return false; },
        message: 'something'
    }
});
const Profile = mongoose.model('profile',profileSchema);

2 个答案:

答案 0 :(得分:1)

这是更新期间的已知问题。我不知道我进行更新的代码结构方式。我有一个名为findOneAndUpdate()的“添加”功能。感谢您的提问,帮助我找到问题。

查看答案: Mongoose .update() does not trigger validation checking

答案 1 :(得分:0)

您可以使用 validator this link上可用的npm软件包

现在,您可以使用仅返回布尔值的受支持方法。以下是代码段:

const validator = require('validator');
const mongoose = require('mongoose');

let userSchema = new mongoose.Schema({
  email:{
    type: String,
    required: true,
    trim: true,
    validate: {
      validator: validator.isEmail,
      message: '{VALUE} is not a valid email'
    }
  },
  password: {
    type: String,
    require: true,
    minlength: 6
  }
});

如您所见,您可以简单地通过内置方法进行验证,如果您想了解更多信息,请参阅validator.js's github repo