如何在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的结果的主要内容,如果未能解决你的问题,请参考以下文章