node.js - 使用正则表达式进行序列化验证

标签 node.js regex postgresql validation sequelize.js

我正在尝试在用户模型中使用正则表达式来验证密码字段。但由于某种原因它不起作用。我检查了 sequelize 文档,它说验证应该在 createupdatesave 上自动运行。 Link to Docs on validation.

我曾尝试使用 is 和自定义验证器 checkPassword 。两者都没有返回任何错误。有人可以解释一下我在这里做错了什么吗?

这是我的用户模型

import { CustomError } from '../../utils/error';

module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define(
    'User',
    {
      firstName: DataTypes.STRING,
      lastName: DataTypes.STRING,
      email: {
        allowNull: false,
        unique: true,
        type: DataTypes.STRING,
        validate: {
          isEmail: true
        }
      },
      password: {
        allowNull: false,
        type: DataTypes.STRING,
        validate: {
          checkPassword(value) {
            if (
              !/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$^+=!*()@%&]).{8,}$/.test(
                value
              )
            ) {
              throw new CustomError(400, 'Provide a valid password!');
            }
          },

          is: {
            args: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$^+=!*()@%&]).{8,}$/,
            msg:
              'The password must contain atleast 8 characters including at least 1 uppercase, 1 lowercase and one digit.'
          }
        }
      }
    },
    {}
  );
  User.associate = function(models) {
    User.hasMany(models.Post, {
      foreignKeyConstraint: true,
      foreignKey: 'userId'
    });
    User.hasMany(models.Comment, {
      foreignKey: 'userId',
      foreignKeyConstraint: true
    });
  };
  return User;
}

最佳答案

好吧,我想通了。验证不起作用的原因是因为我已经对密码进行了哈希处理,因此它通过了验证规则。现在我已经将验证移到我从用户那里获取密码的地方。

关于node.js - 使用正则表达式进行序列化验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58502043/

相关文章:

node.js - ZeroMQ:订阅者可以发布吗?

java - 推文中有效提及的正则表达式

ios - 将NSRegularExpression更新为特定模式

PHP正则表达式。仅在第一个单词后有空格的字母表

mysql - 在sql中选择子字符串

node.js - 我如何从 github 安装 npm 模块并构建它?

node.js - 如何快速检查是否运行 npm install Node

node.js - 编写 Mongoose 插件- plugin() 方法?

mysql - 如何用年份和日期排序 SQL 结果?

ruby - 为什么 Postgres 全文搜索和 Elasticsearch 对结果的排名不同?