【问题标题】:.save() is not a Function in sequelize.save() 不是 sequelize 中的函数
【发布时间】:2023-02-16 12:55:33
【问题描述】:

当我尝试运行这些代码时出现“user.save is not a function”错误。我不知道为什么。如果你弄明白了,我会很高兴。

let updateUserInfo = (data) => {
    return new Promise(async (resolve, reject) => {
        try {
            const user = await db.User.findOne({
                where: { id: data.id }
            })

            if (user) {
                user.first_name = data.first_name;
                user.last_name = data.last_name;
                user.email = data.email;

                await user.save();
                resolve();
            }
            else {
                resolve();
            }
        } catch (e) {
            reject(e)
        }
    })
}

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    此错误表明您的代码有错误。 那就是如果你想通过异步传递 findAll 方法并等待使用它而不是你的代码:

    var [err, user] = await to(
      db.User.findOne({
        where: { id: data.id },
      })
    );
    

    然后使用 user.save() 我希望它有帮助。

    【讨论】:

    • 我认为我的代码没有错,因为我之前已经成功运行过该代码,但是当我将数据库从 mysql 更改为 progres 时,它是错误的,所以你知道为什么吗
    • @Zombani 我不熟悉 postgresql 但这个错误不是数据库错误。
    【解决方案2】:

    我认为 Sequelize v6 使用与以前版本不同的数据更新方式。下面是我的代码

    (参考来源:[https://sequelize.org/docs/v6/core-concepts/model-querying-basics/#:~:text=%7D)%3B-,Simple,-UPDATE%20queries%E2%80 %8B][1])

    let updateUserData = (data) => {
     return new Promise(async (resolve, reject) => {
      try {
      await db.User.update(
        {
          firstName: data.firstName,
          lastName: data.lastName,
          address: data.address,
          phonenumber: data.phonenumber,
        },
        { where: { id: data.id } }
       );
       resolve();
      } catch (e) {
       reject(e);
      }
     });
    };
    

    【讨论】:

      猜你喜欢
      • 2022-11-15
      • 2016-12-08
      • 1970-01-01
      • 2021-03-21
      • 2021-07-14
      • 2021-12-04
      • 2020-04-08
      • 2018-07-30
      • 2017-04-24
      相关资源
      最近更新 更多