mysql - 使用 mysql 和 knex 将 SELECT COUNT 保存到变量中

标签 mysql node.js knex.js

我想使用 knex 和 MySQL 进行计数并将计数值保存到变量中。下面是我的代码片段。我使用 postman 来请求

router.post('/insertNewProject', (req, res) => {
    knex
      .raw('SELECT COUNT(id_proj) FROM project WHERE projectName=?', [req.body.projectName])
      .then((count) => {
        res.json(count[0])
      })
      .catch(() => {
        res.json({ success: false, message: "Please try again later." })
      })
})

这将返回我:

[
    {
        "COUNT(id_proj)": 0  //or 1 of the record is in table
    }
]

我的问题是如何将结果存储到变量中?根据 select count 的结果,我希望如果它是 =0 则执行一次查询,如果它大于 0,则执行另一次查询。感谢您的宝贵时间!

最佳答案

您的 knex 查询中可能有错误,试试这个:

router.post('/insertNewProject', async (req, res) => {
    const result = await knex('project')
        .count('id_proj as count')
        .where({projectName: req.body.projectName})
        .first()
        .catch(() => res.json({
            success: false,
            message: "Please try again later."
        }));

    if (result.count === 0) {
        // Perform some query
        return res.json({/* Some response */});
    } else {
        // Perform another query
        return res.json({/* Some response */});
    }
});

关于mysql - 使用 mysql 和 knex 将 SELECT COUNT 保存到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52623828/

相关文章:

mysql - 为什么 MySQL 会发出文件排序?

javascript - 如何在 Node.JS 中多行编写函数的输出

node.js - 如何使用 Node.js 在远程服务器上对 google Sheets api 的用户进行身份验证?

javascript - 如何使用 knex.select() 选择数组列类型的列的第一个元素?

postgresql - knexjs 按日期和时间获取数据

javascript - API 在未发送/api/users/create 响应的情况下解析,这可能会导致请求停止。下一个

sql - MySQL:将主键返回为空

mysql - 将 MySQL 客户端配置传递给 "rails db"

php - 如何存储在 MySQL 表中创建的时间?

node.js - METEOR - 是否有处理人口的机制