如何在Nodejs中提取来自sql的结果

Posted

技术标签:

【中文标题】如何在Nodejs中提取来自sql的结果【英文标题】:How do I extract results coming from sql in Nodejs 【发布时间】:2018-10-28 05:01:02 【问题描述】:

我对使用 nodejs 的 SQL 相当陌生,我正在使用 knex raw 来运行 sql 查询,我正在尝试添加两列

这是我的代码

db.raw("SELECT SUM(`column1`) + SUM(`column2`) FROM `sales` AS `total`")
 .then(result => console.log(result[0]))

如果我正在运行它,我会在控制台中得到它

 [RowDataPacket 
    'SUM(`column1`) + SUM(`column2`)': 33458338.169500016  ]

我期待得到

 [RowDataPacket 
    'total': 33458338.169500016  ]

但是,因为它的名字并不重要,我只想要数字所以我尝试了这个

db.raw("SELECT SUM(`column1`) + SUM(`column2`) FROM `sales` AS `total`")
 .then(result => console.log(result[0]['SUM(`column1`) + SUM(`column2`)']))

我在控制台中收到 undefined

如何获得总数?

【问题讨论】:

【参考方案1】:

为什么不这样:

db.('sales').sum( total: ['column1', 'column2'] )

【讨论】:

类似“knex('users').sum( sum: ['products', 'orders'] ) ”,我试过“db('sales').sum(总计:['column1', 'column2'] )" 但这也给出了 SQL 语法错误 你的表结构是什么,错误是什么?【参考方案2】:

你应该使用

SELECT SUM(`column1`) + SUM(`column2`) AS `total` FROM `sales`

这将解决您的第一部分,并且由于您的 result[0] 输出仍然显示一个数组,您可以考虑使用 result[0][0].total

【讨论】:

更新了答案,从你的数据看来,result[0] 是一个数组

以上是关于如何在Nodejs中提取来自sql的结果的主要内容,如果未能解决你的问题,请参考以下文章

如何以刷新率在nodejs中显示来自mysql的数据

如何从 SQL 结果中提取数值数据

如何在nodejs中提取文件名?

如何在 servlet 中调用 DAO 方法来提取查询结果

如何使用passport-jwt在nodejs中发送/提取JWT令牌?

如何在nodejs中处理来自android的JSON