【问题标题】:How to validate a string field in sequelize.js?如何验证 sequelize.js 中的字符串字段?
【发布时间】:2017-08-09 15:50:33
【问题描述】:

如何验证数据库字段以仅接受字符串?

在我的数据库中,我有两个字段:

  1. description:字符串
  2. completed: 布尔值

我希望描述字段只接受一个字符串值。我的意思是:

  • 'description':'text' => 数据库接受此请求
  • 'description': true or false => 数据库拒绝这个请求
  • 'description': 123 => 数据库拒绝此请求

目前description字段可以接受布尔值,所以我的配置有问题。

module.exports = function(sequelize, DataTypes) {
    return sequelize.define('todo', {
        description: {
            type: DataTypes.STRING,
            allowNull:false,
            validate: {
                len: [1, 250],
                isBoolean:false,
                isAlpha:true
            }
        },
        completed: {
            type: DataTypes.BOOLEAN,
            allowNull: false,
            defaultValue: false,
            validate:{
                isBoolean:true
            }
        }
    });
};

【问题讨论】:

    标签: node.js validation sequelize.js


    【解决方案1】:

    您可以使用正则表达式验证来检查该值是否为字符串,并且该值不是truefalse

    return sequelize.define('todo', {
        description: {
            type: DataTypes.STRING,
            allowNull:false,
            validate: {
                is: ^((?!true|false|TRUE|FALSE).){1,255}$
            }
        },
        ...
    

    http://docs.sequelizejs.com/manual/tutorial/models-definition.html#validations

    【讨论】:

    • 我不确定这是 OP 想要的。他们说描述字段可以接受布尔变量,所以我的配置中存在问题,这让我认为他们不想输入 true,但他们可以。虽然可能是错的,但只是想指出它。
    • 感谢您的回答,我只希望描述字段只接受一个字符串值而不是布尔值,所以我只尝试了您答案的第一部分:是:[a-z|A-Z]{1,250} 以及试过这个是:/^[a-z]+$/i,但不起作用,我不希望描述接受布尔值
    • @NathanOliver,是的,你是对的,我已经更新了答案。
    • @Zola 请检查新答案。
    • @alexmac 谢谢
    猜你喜欢
    • 2016-09-04
    • 2013-03-16
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    相关资源
    最近更新 更多