Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 值放置在Sequelize中的WHERE子句中,PostgreSQL获取所有内容_Node.js_Postgresql_Sequelize.js - Fatal编程技术网

Node.js 值放置在Sequelize中的WHERE子句中,PostgreSQL获取所有内容

Node.js 值放置在Sequelize中的WHERE子句中,PostgreSQL获取所有内容,node.js,postgresql,sequelize.js,Node.js,Postgresql,Sequelize.js,我有一段代码: return User.findAll({where: {}, include:[ {model: UserInfo, where: { gender: genderPreference }} ] 我想在genderPreference中传递这样一个值,这样它就可以给我所有的值。目前我传递的是“男性”或“女性”,这会相应地给我数据库中的数据;但是如果对任何性别都没有偏好,那么我就不知道该怎么办。 我试过空,“,”;但它们都不起作用。有什么解决办法吗? 谢谢。只要

我有一段代码:

return User.findAll({where: {}, include:[
  {model: UserInfo, where: {
    gender: genderPreference
  }}
]
我想在genderPreference中传递这样一个值,这样它就可以给我所有的值。目前我传递的是“男性”或“女性”,这会相应地给我数据库中的数据;但是如果对任何性别都没有偏好,那么我就不知道该怎么办。 我试过空,“,”;但它们都不起作用。有什么解决办法吗?
谢谢。

只要不要在
null
上使用引号,就可以了

return User.findAll({where: {}, include:[
  {model: UserInfo, where: {
    gender: null
  }}
]

请看

我实际上用另一种方法解决了这个问题。放置:

gender: null
实际上搜索数据库中的性别字段是否为空,所以我不得不用另一种方法来解决它。我想要数据库中的“所有数据”。 所以,这基本上解决了这个问题:

 if(req.body.genderPreference == "none"){
    conditionalUserInfo = {model: UserInfo, where:{}};
} else {
    conditionalUserInfo = {model: UserInfo, where: {gender: req.body.genderPreference}};
}
return User.findAll({where: {}, include:[
  conditionalUserInfo
]

GenderPreference参数包含“Male”或“Female”或“none”。

如果不使用if/else子句,这里有一种更好的方法来实现所需功能

return User.findAll({where: {}, include:[
 {
    model: UserInfo,
    where: req.body.genderPreference ? { gender: req.body.genderPreference } : {}
  }
]

如果身体存在,则允许数据库搜索,如果身体不存在,则返回所有性别偏好。我相信这是一个更干净的代码。

嘿,埃文,谢谢你的尝试,但仅仅设置null并不能解决问题。即使将性别设置为空,我仍然没有从数据库中获得任何数据。我猜数据库也会尝试匹配我们输入的空值。不太可能,请打开语句日志并检查sequelize发送到数据库的内容。您可以使用sequelize或postgresql的log_min_语句
选择“用户”;“id”;“用户”;“电子邮件”;(此处为其他sql);“用户”;“id”=“用户信息”;“用户id”和“用户信息”;“性别”为空我将此作为我的sql。有什么问题吗?