2017-05-09 52 views
7

我正在編寫我的服務來使用PostgreSQL的sequelize更新一行。當我使用PSequel試試我的查詢,它工作正常:如何將.update()值設置爲NULL在續集中

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; 
    } 
    }); 

我的模型確實允許爲空,我相信是允許空值是默認以及設置:

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

任何其他值,但NULL按預期工作。有沒有不同的方法來設置空值?

+0

奇怪,似乎柱結構沒有問題,我 – Beginner

+0

其中:{ ID:ID } 給ID的廣告沒有2或定義它 – sunil

+0

蘇尼爾 - 我以前做過。找到正確的行來更新現在不是問題,因爲我可以將其更新爲任何其他值,但爲空。 – jerrylow

回答

5

從它的外觀來看,我認爲你的問題是你正在使用SQL語法的空值('NULL'),你應該使用JS語法('null')。

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

應該工作。

0

您是否在日誌中檢查了更詳細的錯誤消息?我建議你添加承諾捕捉錯誤,然後更新你的問題。

現在,我的猜測是你創建了與omitNull: true的連接。使用一個空屬性調用更新函數可能是錯誤500的原因,因爲它會生成不完整的UPDATE命令(不包括SET)。

嘗試設置omitNull: false或者,如果你不能做這個測試,嘗試更新這種方式:

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

更多信息here

相關問題