【问题标题】:is changed function in sequelize like isModified in mongoose?sequelize 中的更改功能是否像猫鼬中的 isModified 一样?
【发布时间】:2022-01-15 17:41:10
【问题描述】:

mongoose isModified function在一个挂钩中,我想在执行加密过程之前确认密码是否已更改。 Mongoose 有一个函数“isModified”,我相信 Sequelize 的“更改”函数也有同样的目的。

我无法让“更改”功能工作。我正在寻找如何使用它的示例。

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    changed() 的工作原理在 official documentation 中有一个示例

    const mdl = await MyModel.findOne();
    mdl.myJsonField.a = 1;
    console.log(mdl.changed()) => false
    await mdl.save(); // this will not save anything
    mdl.changed('myJsonField', true);
    console.log(mdl.changed()) => ['myJsonField']
    await mdl.save(); // will save
    

    请记住,系统会检测顶级字段的更改,并且仅检测自上次调用 save 以来所做的更改。

    【讨论】:

    • 你知道为什么 mdl.save();不会保存任何东西?
    • 如果您更改 JSON 字段对象中的某些道具,那么 save 将根本不会跟踪它们。我想 Sequelize 只跟踪整个字段值的变化。对于 JSON 字段,这将替换整个对象值。
    • hooks: { afterValidate: async function (user, next) { if (!user.changed("password")) { next() } const salt = await bcrypt.genSalt(10); user.password = await bcrypt.hash(user.password, salt); } },你能告诉我这有什么问题吗?因为它会抛出一个错误,说 next 不是函数。每当我尝试重置密码时,它都会重新散列它。请帮帮我。我完全被困住了。谢谢你。
    • 如果你想让我看一下,请转到一个单独的问题并在此处提供一个链接
    猜你喜欢
    • 1970-01-01
    • 2019-02-27
    • 2018-02-16
    • 2018-02-12
    • 1970-01-01
    • 2021-05-20
    • 2020-04-26
    • 2020-12-16
    • 1970-01-01
    相关资源
    最近更新 更多