node.js - Sequelize changed 功能不起作用 - 就像 Mongoose 的 isModified

标签 node.js sequelize.js

在一个钩子(Hook)中,我想在执行加密过程之前确认密码是否已更改。
Mongoose 有一个功能“isModified”,我相信 Sequelize 的“更改”功能服务器的目的相同。
我无法让“更改”功能工作。我正在寻找一个如何使用它的例子。
*******代码片段

{
        hooks: {
                beforeCreate: async (user) => {
                        if (changed([user.password]) === false) return next();

                        const salt = await bcrypt.genSalt(12);
                        user.password = await bcrypt.hash(user.password, salt);
                        user.passwordConfirmed = undefined;
                },
        },
        instanceMethods: {
                validPassword: function (password) {
                        return bcrypt.compare(password, this.password);
                },
        },
}

最佳答案

您必须使用 Hook beforeUpdateprevious功能。尝试这样的事情:

let { Sequelize, DataTypes } = require('sequelize');

let sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: 'database.sqlite',
});

(async () => {
  try {
    await sequelize.authenticate();
    console.log('connected');

    let Person = sequelize.define('Person', { name: DataTypes.STRING, age: DataTypes.INTEGER });
    Person.addHook('beforeUpdate', (person) => {
      if (person.previous('name') != person.name) {
        console.log('name changed', person.previous('name'), person.name);
      }
    });

    await Person.sync({ force: true });

    await Person.create({ name: 'John', age: 30 });

    let [person] = await Person.findAll();
    person.name = 'Paul';
    await person.save();
  } catch (error) {
    console.error('Unable to connect to the database:', error);
  }
})();

关于node.js - Sequelize changed 功能不起作用 - 就像 Mongoose 的 isModified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63492830/

相关文章:

node.js - Apollo GraphQL 中的上下文与 RootValue

node.js - Node-sass 不理解波浪号

node.js - 可导出的 Angular "ng-cli"模块

node.js - Sequelize - 即使只检索一条记录也始终返回数组

node.js - Sequelize Postgresql 没有强制外部约束

javascript - Sequelize CLI 在执行使用 db : migrate 创建表的命令时返回错误

javascript - 类型错误 : Cannot read property 'database' of undefined

javascript - 带有 DynamoDB 的 NodeJS 抛出错误 "AttributeValue may not contain an empty string"

javascript - 之前和之后的捕获位置

node.js - 数据库迁移在 Node.js 项目中处于什么位置?