一个简单的Nodejs MySQL查询

我想用nodejs使用mysql:试图运行查询:select count(*) from TABLE。 结果出来作为一个简单的Nodejs MySQL查询

[ RowDataPacket { 'count(*)': 33 } ]

我只想要33的答案时,JavaScript框架代码如下所示

var express = require('express');  

var router = express.Router();

var mysql = require('mysql');

var con = mysql.createConnection({

host: "localhost",

user: "honolulu",

password: "honolulu",

database: "db"

});

con.connect(function(err) {

if (err) throw err;

console.log("Connected to question database file 1!");

});

var but=20

con.query('select count(*) from qpsc',function (err, result) {

if (err) throw err;

but=result;

console.log(but);

});

/* GET home page. */

router.get('/', function(req, res, next) {

res.render('index', { title: 'Express' });

});

router.get('/file', function(req, res, next) {

res.render('index2',{ num_buttons: '20'});

// console.log("RENDERED FROM INDEX.js");

});

module.exports = router;

所以,我应该怎么办? 请帮忙。

回答:

你的结果变量是

[ RowDataPacket { 'count(*)': 33 } ] 

你可以得到33一个对象数组,在查询中选择每个字段的键。

您可能会在result[0]["count(*)"]条目中找到您的计数,但这有点丑陋。

我会建议使用的别名在您的SQL查询,使其更加优雅:

select count(*) as many from qpsc 

这样的话,你可以检索你的计数是这样的:

var yourCount = result[0].many; 

回答:

由于结果是:

var theCount = result[0]['count(*)']; 

所以,你的代码适应,这将是::

con.query('select count(*) from qpsc',function (err, result) { 

if (err) throw err;

but = result[0]['count(*)'];

console.log(but);

});

回答:

如果您重命名字段在SQL查询中,您可以将它们作为属性进行访问。因此,如果您使用"select count(*) AS 'result' from TABLE";,则可以访问33作为row.result或您在SQL查询中使用的任何其他名称。

所以我通常做的是别名我请求的所有SQL字段,然后将所有行都推送到一个数组,然后使用Object.assign将该数组映射到该数组,以将所有RowDataPackets转换为普通对象。

我使用下面的结构使用MySQL模块:

const NOOP =() => {}; 

const server = {

"host" : "localhost",

"user" : "honolulu",

"password" : "honolulu",

"database" : "db"

};

const connection = MYSQL.createConnection(server);

connection.connect(error => {

if (error) {

// handle error

}

// else NOOP();

});

const sql = "select count(*) AS 'result' from TABLE";

const query = connection.query(sql);

const resultSet = [];

query.on('error', error => {

// handle query error

});

// Incoming field packets, if any, preceding the resultSet rows. No operation.

query.on('fields', NOOP);

// Every time a row gets returned, this handler is triggered.

query.on('result', row => resultSet.push(row));

// All rows have been returned

query.on('end',() => {

// do something with the resultSet.

});

以上是 一个简单的Nodejs MySQL查询 的全部内容, 来源链接: utcz.com/qa/266223.html

回到顶部