2017-08-09 47 views
4

如何驗證數據庫字段只接受字符串?如何驗證sequelize.js中的字符串字段?

在我的數據庫,我有兩個領域:

  1. description:字符串
  2. completed:布爾

我想說明字段接受只是一個字符串值。我的意思是:

  • '描述': '文本'=>數據庫接受這一請求
  • 'descrition':true或false =>數據庫拒絕這個請求
  • 'descrition':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 
      } 
     } 
    }); 
}; 

回答

0

你可以使用正則表達式驗證,以檢查其值是字符串,它的價值不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

+0

我不知道這是OP想要什麼。他們說*描述字段可以接受一個布爾變量,所以在我的配置中有一個問題*,這讓我覺得他們不想輸入true,但他們可以。可能是錯誤的,但只是想指出。 – NathanOliver

+0

謝謝你的回答,我只想描述字段接受只是一個字符串值不布爾,所以我只是你的答案的第一部分:是:[az | AZ] {1,250},也試過這是:/^[ az] + $/i,但不起作用,我不想要說明接受布爾值 – Zola

+0

@NathanOliver,是的,你說得對,我已經更新了答案。 – alexmac