#mysql #sequelize.js
#mysql #sequelize.js
Вопрос:
У меня есть адрес, и я хочу посмотреть, есть ли он уже в БД, если нет, создайте новый. Я знаю, что могу использовать findOrCreate()
здесь, но давайте упростим и просто проверим, почему я даже не могу найти существующий адрес.
var address = {
name: req.body.name,
address1: req.body.address1,
address2: req.body.address2,
zip: req.body.zip,
city: req.body.city,
country: req.body.country,
user_id: req.body.user_id
};
Address.find({where: address}).then(function(result){
console.log(result);
}).catch(function(err){
console.error(err);
});
Сгенерированный запрос запрашивает ... AND user_id = NULL
, что неверно. Он должен спросить ... AND user_id IS NULL
. Как я могу позволить sequelize сделать это правильно для меня? Спасибо.
Ответ №1:
Вы должны просто использовать JavaScript null примитив.
var address = {
name: req.body.name,
address1: req.body.address1,
address2: req.body.address2,
zip: req.body.zip,
city: req.body.city,
country: req.body.country,
user_id: req.body.user_id || null
};
Это сгенерирует запрос
... user_id IS NULL
Дополнительная информация
model.findAll( { where: { some_column : undefined } } );
сгенерирует
... WHERE `some_column` = NULL
Комментарии:
1. Спасибо за ваш ответ, я скоро протестирую это.
2. против. кстати, вы также можете использовать
null
напрямую:model.findAll( { where: { some_column : null } } );
3. Необходимо использовать «null»