验证表单内容是否符合数据库字段的规则

来源:互联网 发布:装修绘图软件 编辑:程序博客网 时间:2024/04/30 19:37

本文是"获取当前数据库(mysql)所有表的字段内容"生成的数据库文件的验证类.

schoma.js

var fs = require('fs');var DBstructure = fs.readFileSync(global.rootPath+"/db.json","utf8");//数据结构文件内容var schema = function(tablename){    this.columns = JSON.parse(DBstructure)[tablename];}exports.schema = schema;//验证数据合法性schema.prototype.validparam = function(data){    for(var p in data){        var err = validRouter(p,data[p],this.columns);        if(err) {            return err;            break;        }    }}//根据不同数据类型,执行不同的函数var types = [];types["int"]=validInt;types["varchar"]=validLength;//types["datetime"]=validDate;//必填项验证function notEmpty(value){    return value?true:false;}//验证整型function validInt(column,value){    if(isNaN(value)) {        return column.comment+"不是数字";    }    else        return "";}//验证长度function validLength(column,value){    if(value.length>parseInt(column.length))        return column.comment+"内容过长";    else        return "";}//分发到不同的验证函数var validRouter = function(key,value,column){    if(column[key]) {        //字段非空统一验证        if (column[key].isnull == "NO") {            if (!notEmpty(value))                return column[key].comment+"不能为空";        }        if (typeof types[column[key].type] == "function") {            var re = types[column[key].type](column[key], value);            return re;        }        else            return "";    }    else        return "";}

调用方式:

var schema = require("./schema").schema;var userSchema = new schema("t_user");    var err = userSchema.validparam(data);    if (err) {        res.write(req.query.jsoncallback + "(" + JSON.stringify(Util.errorMessage(err)) + ")");        res.end();        return;    }


0 0