【问题标题】:Check if ROW already exists in Database using query > NodeJS使用查询 > NodeJS 检查 ROW 是否已存在于数据库中
【发布时间】:2017-04-03 20:40:51
【问题描述】:

这个问题我已经有一段时间了,但我似乎无法弄清楚,我在 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!

【问题讨论】:

  • 您使用的是什么数据库引擎? query() 函数使用什么库/模块?
  • @sadmicrowave 抱歉没有指定,我使用mysql

标签: javascript node.js database


【解决方案1】:

它返回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 :( !');
        }
    }
});

【讨论】:

  • 虽然我尝试了 .length 并返回 undefined,但它工作得很好!感谢您的快速回复!
【解决方案2】:

接受的答案对我不起作用。我找到了另一个解决方案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; 

【讨论】:

    猜你喜欢
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2019-01-17
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多