如何在续集中将.update()值设置为NULL

时间:2017-05-09 05:51:42

标签: javascript database postgresql sequelize.js

我正在编写我的服务,使用PostGres的sequelize更新一行。当我使用PSequel试用我的查询时,它可以正常工作:

UPDATE "test_table" SET "test_col"=NULL WHERE "id"= '2'

但是使用sequelize会引发500错误:

db.TestTable.update({ testCol: NULL }, { where: { id: id } })
  .then((count) => {
    if (count) {
      return count;
    }
  });

我的模型确实允许使用null,我相信它允许空值为默认值以及设置:

testCol: {
  type: DataTypes.INTEGER,
  allowNull: true,
  defaultValue: null,
  field: 'test_col'
},

任何其他值,但NULL按预期工作。设置空值有不同的方法吗?

2 个答案:

答案 0 :(得分:10)

从它的外观来看,我认为你的问题是你使用SQL的语法来表示空值(' NULL'),你应该使用JS语法('空'。)

db.TestTable.update({ testCol: null }, { where: { id: id } })
  .then((count) => {
    if (count) {
      return count;
    }
  });

应该有用。

答案 1 :(得分:0)

您是否在日志中检查了更详细的错误消息?我建议您添加一个承诺捕获错误,然后更新您的问题。

目前,我的猜测是您创建了与omitNull: true的连接。仅使用一个null属性调用更新函数可能是错误500的原因,因为它会生成不完整的UPDATE命令(没有SET)。

尝试设置omitNull: false,或者,如果您无法执行此测试,请尝试以此方式更新:

db.TestTable.testCol = null;
db.TestTable.save(['testCol']);

更多信息here