У меня есть этот фрагмент кода:
return User.findAll({where: {}, include:[
{model: UserInfo, where: {
gender: genderPreference
}}
]
Я хочу передать такое значение в genderPreference, чтобы он давал мне все значения. В настоящее время я передаю либо «Мужской», либо «Женский», что дает мне эти данные из базы данных соответственно; но если нет предпочтения ни одному из полов, тогда я понятия не имею, что делать. Я пробовал null, "", ""; но ни один из них не работает. Есть ли решение этого? Спасибо.
Только не используйте кавычки на null
, все будет нормально
return User.findAll({where: {}, include:[
{model: UserInfo, where: {
gender: null
}}
]
См. учебник для получения дополнительной информации
вряд ли, включите регистрацию операторов и проверьте, что ваше продолжение отправляет в базу данных. Вы можете использовать sequelize stackoverflow.com/a/21431627/124486 или postgresql log_min_statement
SELECT "User"."id","User"."email"...(other sql here)........INNER JOIN "UserInfos" AS "UserInfo" ON "User"."id" = "UserInfo"."userId" AND "UserInfo"."gender" IS NULL;
Я получаю это как мой sql. Что-то не так?
На самом деле я решил это с другим подходом. Размещение:
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 содержит либо «Мужской», либо «Женский», либо «Нет».
Есть гораздо лучший способ добиться того, что вам нужно, без предложения if / else
return User.findAll({where: {}, include:[
{
model: UserInfo,
where: req.body.genderPreference ? { gender: req.body.genderPreference } : {}
}
]
Это позволяет выполнять поиск в базе данных, если тело присутствует, и возвращает все гендерные предпочтения, если тело отсутствует. Я считаю, что это намного более чистый код.
Привет, Эван, спасибо за попытку, но просто установка нуля не решила проблему. Я по-прежнему не получаю данных из базы данных даже после того, как установил пол как null. Я предполагаю, что база данных пытается сопоставить введенное нами нулевое значение.