我想在Sequelize中使用upsert方法,但是我得到的布爾返回值不一致。儘管數據庫中的數據更新,但參數總是爲假。這裏是我的代碼:Sequelize upsert布爾型不起作用
router.post('/deploy', function (req, res) {
var data;
data = req.body;
//Update data in mySQL
db.site.upsert({
name: data.name,
templateId: data.templateId,
siteName: data.siteName,
domain: utils.formatDomain(data.domain),
mainEmail: data.mainEmail,
mainPhone: utils.removePhoneNumberFormat(data.mainPhone),
mainExt: ''
}, {
where: {
domain: data.domain
},
}).then(function (updatedData) {
console.log(updatedData);
if (updatedData) {
console.log('New data written successfully');
return res.status(200).send('New data written');
} else {
console.log('Data did not change from the origin');
return res.status(200).send('Nothing changed');
}
}).catch(function (e) {
console.log('Deploy Controller Error: s% ', e);
return res.status(500).end('unexpected_error');
});
});
我相信我在這裏做錯了什麼,但任何幫助或反饋將不勝感激。謝謝,我希望你過得愉快。 :)
我試圖把這個的repro(這裏:https://github.com/cfogelberg/sequelize-playground/tree/master/tests/08-mysql-upsert-not-working),但我找到upsert總是返回true。 我已經深入瞭解了這一點,它似乎是因爲rowCount始終爲1(相關來源:https://github.com/sequelize/sequelize/blob/0de404640d4c71e2d1f1259356650dfb586a248b/lib/query-interface.js#L566 )。 這是使用MySQL版本5.5.46,node-mysql版本2.9.0和sequelize 3.13.0。你使用的是什麼版本的DB,node-mysql和sequelize? – cfogelberg
謝謝@cfogelberg。我正在使用節點v4.2.1,MySql v5.6.27和Sequelize v3.3.2。我有什麼類型的選項作爲解決方法?我是Sequelize的新手。再次感謝! – Schnaars
看着這更多恐怕我已經無法repro updatedData ===錯誤與Sequelize 3.3.2,3.13.0或3.14.0。如果反正發佈一些工作會很有幫助,那就讓我知道,我會把它們作爲這個問題的正確答案。 – cfogelberg