在更新时连续抛出无效值[功能]

时间:2018-12-10 23:47:50

标签: 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,
            }
        });

即使它们不相关,我也尝试对它们进行相似处理,但仍收到相同的结果。 我也尝试过:

  • 更新另一个字段而不是时间戳。
  • 将硬编码的字符串指定为updateAt值
  • 在一个带有或不带有运算符的where: { user_id: { $eq: req.currentUser.id } }运算符处进行单查询,如果没有运算符,则字段和值的类型均为整数或字符串
  • 将更新字段保留为空对象
  • 像用户更新查询中列出的那样,在fields对象中指定了我要更新的字段

可能由于一个简单的错误或我错过的事情而变得过热。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我没有完全解决此问题,而是找到了解决方法。我升级了Sequelize以使用打字稿,并且对我有用。

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

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