序列化 mysql 查询,其中属性为 null

mol*_*rat 3 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);
  });
Run Code Online (Sandbox Code Playgroud)

生成的查询询问哪... AND user_id = NULL一个是错误的。应该问一下... AND user_id IS NULL。我怎样才能让sequelize为我做正确的事情?谢谢。

dri*_*hev 5

您应该只使用 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
};
Run Code Online (Sandbox Code Playgroud)

这将生成查询

... user_id IS NULL
Run Code Online (Sandbox Code Playgroud)

附加信息

model.findAll( { where: { some_column : undefined } } );
Run Code Online (Sandbox Code Playgroud)

将生成

... WHERE `some_column` = NULL
Run Code Online (Sandbox Code Playgroud)