使用查询>检查数据库中是否已存在ROW的NodeJS

时间:2017-04-03 20:40:51

标签: javascript node.js database

我已经有一段时间没遇到这个问题而且我似乎无法解决这个问题,我已经在Stackoverflow上查看了但是只能找到符合我问题的PHP或C#代码。我试图检查一行是否存在,如果它没有,则发送一条不存在的消息,如果它确实发送了一条消息。

这是我的代码,

query('SELECT * FROM `cases` WHERE `case`='+pool.escape(String(getCase)), function(err, row) {

    if(err) {
        logger.error('Error in DB');
        logger.debug(err);
        return;
    }else{

        console.log('Case row was found!');

    }

});

此外,getCase是一个我可以更改的变量,但即使它不在数据库中,它似乎也会返回Case row was found!

2 个答案:

答案 0 :(得分:0)

它返回Case row was found!,因为您只是告诉回调在发生错误时停止。您需要扩展else语句以检查row变量中是否存在任何数据,如下所示:

query('SELECT * FROM `cases` WHERE `case`='+pool.escape(String(getCase)), function(err, row) {

    if(err) {
        logger.error('Error in DB');
        logger.debug(err);
        return;
    } else {
        if (row && row.length ) {
            console.log('Case row was found!');
            // do something with your row variable
        } else {
            console.log('No case row was found :( !');
        }
    }
});

答案 1 :(得分:0)

已接受的答案对我不起作用。我找到了另一种解决方案here

文章摘录:

您有一个表格地址,想检查是否已经有一个address_id = 100的行。 您可以使用COUNT进行检查:

SELECT COUNT(*) FROM address WHERE address_id = 100;

但是,如果您正在寻找一种更快的查询,答案为是/否:

SELECT EXISTS(SELECT 1 FROM address WHERE address_id = 100);

我想补充一点,我们也可以使用LIMIT

SELECT * FROM address WHERE address_id = 100 LIMIT 1;