首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用MongoDB和猫鼬对用户输入进行验证?

用MongoDB和猫鼬对用户输入进行验证?
EN

Stack Overflow用户
提问于 2016-01-06 08:55:10
回答 1查看 3K关注 0票数 0

假设用户输入,我将使用统一的方法来验证我的模式,因此不仅在保存/更新上应用内置的验证,而且还在find()等上应用内置的验证。

代码语言:javascript
复制
var User = mongoose.model("User", new Schema({
    name:   {type: String, minlength: 5, maxlength: 128, required: true, unique: true});
}));

我想要的是每次运行验证器,然后再用猫鼬运行查询,以确保用户输入符合全局模式规则。

在我的路线上是这样的:

代码语言:javascript
复制
var username = $.get["username"], //An input from GET querystring

User = mongoose.model("User");

User.validate({name: username}, function(err) {
    if (err) return console.log("not valid input"); //i.e. too short

    //run query if valid
});

是否有插件(假设我没有使用Express),或者其他已经包含在猫鼬中的插件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-06 10:48:39

文档:默认情况下,在猫鼬中支持http://mongoosejs.com/docs/validation.html。如果在每次保存操作之前都要查找泛型验证,则可以指定要验证的字段path和验证validate(function(valueEntered, howToRespond)。如果验证未通过,则将引发错误,如下面的示例所示。

示例:为了方便起见,使用了蓝鸟。以下代码段将在每次保存操作之前验证电子邮件。

代码语言:javascript
复制
var mongoose = require('bluebird').promisifyAll(require('mongoose'));
var Schema = mongoose.Schema;
var UserSchema = new Schema({
  name: String,
  email: {
    type: String,
    lowercase: true
  },
  password: String,
});

UserSchema
  .path('email')
  .validate(function(value, respond) {
    var self = this;
    return this.constructor.findOneAsync({ email: value })
      .then(function(user) {
        if (user) {
          if (self.id === user.id) {
            return respond(true);
          }
          return respond(false);
        }
        return respond(true);
      })
      .catch(function(err) {
        throw err;
      });
  }, 'The specified email address is already in use.');

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34629013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档