J'écris mon service pour mettre à jour une ligne à l'aide de Sequelize for PostGres. Lorsque j'essaie ma requête avec un PSequel, cela fonctionne bien:
UPDATE "test_table" SET "test_col"=NULL WHERE "id"= '2'
Mais l'utilisation de sequelise génère une erreur 500:
db.TestTable.update({ testCol: NULL }, { where: { id: id } })
.then((count) => {
if (count) {
return count;
}
});
Mon modèle permet allowNull, ce qui, je crois, permet aux valeurs NULL d'être les valeurs par défaut et définies:
testCol: {
type: DataTypes.INTEGER,
allowNull: true,
defaultValue: null,
field: 'test_col'
},
Toute autre valeur que NULL fonctionne comme prévu. Existe-t-il une méthode différente pour définir les valeurs NULL?
À première vue, je pense que votre problème est que vous utilisez la syntaxe SQL pour une valeur nulle ('NULL') dans laquelle vous devriez utiliser la syntaxe JS ('null').
db.TestTable.update({ testCol: null }, { where: { id: id } })
.then((count) => {
if (count) {
return count;
}
});
devrait marcher.
Avez-vous vérifié un message d'erreur plus détaillé dans les journaux? Je vous suggère d'ajouter une erreur de capture de promesse, puis de mettre à jour votre question.
Pour l'instant, je suppose que vous avez créé votre connexion avec omitNull: true
. Appeler une fonction de mise à jour avec une seule propriété null est probablement la raison de l'erreur 500 car elle va générer une commande UPDATE
incomplète (sans SET
).
Essayez de définir omitNull: false
ou, si vous ne pouvez pas faire ce test, essayez de mettre à jour de cette façon:
db.TestTable.testCol = null;
db.TestTable.save(['testCol']);
Plus d'infos ici .