一个简单的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