了解查询中变量的行为

时间:2018-09-12 14:59:55

标签: node.js sequelize.js

我需要知道变量user的行为。 下面的代码运行良好:

var user = await Usuario.findOne({
            where:{username:usuario_email}
        }); 
        if(!user){
            retorno.excecao(res, null, { mensagem: "not found" });
            return;
        }

但是,当我使用findAll时,如果该语句不起作用,则两者都不相反(用户== true):

var user = await Usuario.findAll({
            where: {[Op.or]: [{email: usuario_email}, {username: usuario_email}]}
            //where:{username:usuario_email}
        }); 
        if(!user){ //neither if(user) works
            retorno.excecao(res, null, { mensagem: "not found" });
            return;
        }

为什么?

抱歉,我的英语或双语部分不好。

1 个答案:

答案 0 :(得分:1)

即使查询结果为空,函数findAll()仍将返回一个数组-因此变量user将是一个空数组[]

一个空数组仍然是真实的,因此您的if语句将不起作用。相反,请检查数组的长度。

if (user.length === 0) {
    // the query returned empty
}