续集验证方法

时间:2014-08-13 05:53:32

标签: validation email sequelize.js

我正在尝试验证我的模型,但我想念一些东西,我不知道它是什么。 这是我的模块和他对电子邮件的验证。

module.exports = function(sequelize, DataTypes){
    return  sequelize.define("Scanner",
        {
        id      : {
            primaryKey      : true,
            autoIncrement   : true,
            type            : DataTypes.INTEGER
        },
        email   : {
            type    : DataTypes.STRING,
            isUnique :true,
            allowNull:false,
            validate:{
                isEmail : true
            }
        },
        pin     : {
            type : DataTypes.INTEGER
        }
    },{
        tableName       : 'scanner'
    });
};

当我试图找到一个带参数的对象(pin + email)如果我把this.email = ssdf.sdf,我的查询启动了,我想先检查我的参数是否正确。

Scanner.prototype.getScannerByCredentials = function(callback){
    //Send only Field id and email
    _Scanner.find({ where: { email : this.email, pin :this.pin},attributes:['id','email'] }).success(function(scanner) {
        return callback(null, scanner);
    }).error(function(error){
        console.log(error);
        return callback(error, null);
    });
};

我尝试使用validate()方法,但我得到了错误:对象[object Object]没有方法'validate',当我成为console.log(_Scanner);我看到我的函数validate()所以我不知道为什么这不起作用..

Scanner.prototype.getScannerByCredentials = function(callback){
    //Send only Field id and email
    _Scanner.find({ where: { email : this.email, pin :this.pin},attributes:['id','email'] }).validate().success(function(scanner) {
        return callback(null, scanner);
    }).error(function(error){
        console.log(error);
        return callback(error, null);
    });
};

我正在阅读文档并尝试在网上创建很多东西,所以如果有人能向我解释什么是错的,那将是非常好的。 非常感谢。

编辑:发现!

我的解决方案,如果你有兴趣:)

我的模特:

module.exports = function(sequelize, DataTypes){
    return  sequelize.define("Scanner",
        {
        id      : {
            primaryKey      : true,
            autoIncrement   : true,
            type            : DataTypes.INTEGER,
            allowNull       : false
        },
        email   : {
            type    : DataTypes.STRING,
            isUnique :true,
            allowNull:false,
            validate:{
                isEmail : true
            }
        },
        pin     : {
            type : DataTypes.INTEGER
        }
    },{
        tableName       : 'scanner',
        classMethods:{
            isValid : function(objScanner) {
                return this.build(objScanner).validate() ? true : false ;
            }
        }
    });
};

我的凭据方法:

Scanner.prototype.getScannerByCredentials = function(callback){


    //MODIF THIS PART / NEED TO IMPROVE
    var error = _Scanner.build({ email : this.email, pin : this.pin}).validate();

    if(error === null){
        _Scanner.find({ where: { email : this.email, pin :this.pin},attributes:['id','email'] }).success(function(scanner) {
            console.log(scanner);
            return callback(null, scanner);
        }).error(function(error){
            console.log(error);
            return callback(error, null);
        });
    }
    else
        return callback(error,null);
};

我的通用更新方法(奖金):

Scanner.prototype.update= function(callback){
    var self = this;
    _Scanner.find(this.id).success(function(scannerFound){
        if(scannerFound){
            //Set old Values by New Values : only values changed
            scannerFound.dataValues = ormize(self,scannerFound.dataValues);

            //Check validation Fields before insert DB
            if(_Scanner.isValid(scannerFound)){
                scannerFound.save().success(function(){
                    return callback(true);
                }).error(function(error){
                    return callback(false);
                });
            }else
                return callback(false);
        }else
            return callback(false);
    }).error(function(error){
        console.log(error);
        return callback(false);
    });
};

如果您对我的代码有任何建议,那将非常感激:) 非常感谢提前

1 个答案:

答案 0 :(得分:2)

您使用的是哪个版本?这应该是fixed

该字段应如下所示。

isEmail: {msg: 'Reason'}