node.js - Sequelize 在更新时抛出无效值 [Function]

标签 node.js postgresql express sequelize.js

我正在尝试更新现有记录,旨在仅更新时间戳,但是每当我执行这个简单查询时,我都会收到一条错误消息:Invalid value [Function]
这是查询代码:

await db.Notification.update({
            updatedAt: moment().format()
        }, {
            where: {
                $and: [
                    { 'permit_id': { $eq: id } },
                    { 'user_id': { $eq: req.currentUser.id } },
                ]
            }
        });

网上还没有找到关于这个问题的任何解决方案,我还想强调以下代码可以正常工作:
await db.User.update({
            refreshToken: null
        },{
            fields: ['refreshToken'],
            where: {
                id: req.currentUser.id,
            }
        });

即使它们不相关,我也尝试将它们相似,但仍然收到相同的结果。
我也试过:
  • 更新另一个字段而不是时间戳。
  • 将硬编码字符串指定为 updatedAt 值
  • 坚持使用或不使用像 where: { user_id: { $eq: req.currentUser.id } } 这样的运算符的单个 where 查询,其中字段和值都是整数或字符串类型,如果没有运算符
  • 将更新字段保留为空对象
  • 指定我试图在 fields 对象中更新的字段,如用户更新查询
  • 中所列

    可能因为一个简单的错误或我错过的事情而过热。请问有什么想法吗?

    最佳答案

    我没有完全解决这个问题,而是找到了一个解决方法。我升级了我的 Sequelize 以使用 typescript ,这对我有用。

    另一种解决方法是使用原始更新查询和/或指定更新的查询类型。例如:

    totalEarnings = await db.sequelize.query('SELECT SUM("priceEstimate") FROM  "Orders" WHERE "assignedCarId" IN (:id)', {
      replacements: {id: carIds},
      type: db.sequelize.QueryTypes.SELECT
    });
    

    关于node.js - Sequelize 在更新时抛出无效值 [Function],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53715412/

    相关文章:

    debugging - 如何调试导致 100% cpu 使用的 node.js?

    node.js - 如何从函数返回数据

    javascript - index.ejs 中的 Angular Controller 错误

    javascript - 显示多个API调用的结果

    postgresql - postgres : Combining filter() with a percentile_cont()

    java - 如何在 Play 中设置默认 PostgreSQL schema?

    java - 更快地批量加载嵌套数据

    javascript - 在 Express 4 中打开 mysql 连接的最佳方法

    node.js - 我可以将自己的 id 提供给 NodeJS 中已连接的套接字吗

    node.js - 在更改、Angular 和 Node JS 上保存到数据库