gpt4 book ai didi

node.js - SequelizeJS - 为什么我的实例重新加载失败, "TypeError: Cannot read property ' dataValues' of null”

转载 作者:太空宇宙 更新时间:2023-11-04 02:21:14 25 4
gpt4 key购买 nike

我正在使用 Sequelize 模型将登录用户的信息存储在 Node web 应用程序中。 user 模型是偏执的 ( docs ),如果用户停用其帐户,则实例将被删除。当我尝试重新加载已停用的用户实例时,它失败并出现以下类型错误。为什么?

TypeError: Cannot read property 'dataValues' of null
at null.<anonymous> (/home/christo/repos/ticktrack/login-fiddle/src/server/node_modules/sequelize/lib/instance.js:723:20)
at tryCatcher (/home/christo/repos/ticktrack/login-fiddle/src/server/node_modules/sequelize/node_modules/bluebird/js/main/util.js:24:31)
at Promise._settlePromiseFromHandler (/home/christo/repos/ticktrack/login-fiddle/src/server/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:489:31)
...

详情

使用计数器跟踪自上次成功登录以来的不成功登录尝试。每次登录失败时,该计数器都会递增,然后重新加载用户对象(以保持 Web 应用程序与数据库同步)。相关实例方法为:

increment_unsuccessful_logins: function increment_unsuccessful_logins() {
return this.increment({ unsuccessful_logins: 1})
.then(this.reload.bind(this, undefined));
}

最佳答案

将重新加载函数绑定(bind)到 this, {paranoid: false} 解决了问题。

发生类型错误是因为正在重新加载的实例已被软删除。当不带选项调用 reload 时(其绑定(bind)中的 undefined),reload 内部调用的 find 未找到任何实例并返回 null。反过来,这导致错误消息 TypeError: Cannot read property 'dataValues' of null.

更新后的功能代码:

    increment_unsuccessful_logins: function increment_unsuccessful_logins() {
return this.increment({ unsuccessful_logins: 1})
.then(this.reload.bind(this, { paranoid: false }));
},

关于node.js - SequelizeJS - 为什么我的实例重新加载失败, "TypeError: Cannot read property ' dataValues' of null”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33305803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com