mysql选择查询结果...
//nodejs database.js
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
database : 'test',
password : '1234'
});
// nodejs app.js
app.get('/api/v0.1/getPostList', function(req, res) {
limit_count = 5;
db.query(postModel.postList(limit_count) , function(err, rows) {
if (err) throw err;
console.log(rows)
res.json(rows);
});
});
//result
RowDataPacket {
POST_SEQ: 13,
POST_TYPE: <Buffer 31 31 30 30>,
CATEGORY: <Buffer 49 54 20 2f 20 4d 4f 42 49 4c 45>, ...
为什么查询数据缓冲区类型?
我不知道原因。
java查询数据成功
[DEBUG] [2016-10-28 19:20:24,160]&lt; == Row:13,1100,GAME ......
答案 0 :(得分:2)
我通过访问值解决了这个问题:
行[0] .POST_TYPE.toString(&#39; UTF8&#39);
行[0] .CATEGORY.toString(&#39; UTF8&#39);
答案 1 :(得分:0)
但如果您有大量记录和字段,这会导致性能问题。您将不得不迭代并串扰所有缓冲区字段。 它应该接收预定义数据类型的数据。即VARCHAR - &gt;串
答案 2 :(得分:0)
我遇到了COUNT生成的int值这个问题。我能够通过在查询中将这些值转换为CHAR来解决问题。然后他们正确地返回格式化为js字符串。这是一个示例查询:
SELECT Date, Park, COUNT(FileID) FROM SkatePix WHERE Park != '' AND Date != 0 GROUP BY Date, Park LIMIT 5;
我将COUNT语句更改为:
CAST(COUNT(FileID) AS CHAR) /* formerly COUNT(FileID) */
这就是诀窍。
答案 3 :(得分:0)
这个话题很老。
但是,我在任何地方都没有很好的答案。
我找到了很好的解决方案。所以我回答了这个话题
参考(npm-mysql) https://www.npmjs.com/package/mysql#type-casting
// Modify the typeCast option to suit your situation.
createConnection({
host: config.host,
port: config.port,
user: config.user,
password: config.password,
database: config.database,
multipleStatements: true,
typeCast: function (field, next) {
if (field.type == 'VAR_STRING') {
return field.string();
}
return next();
}
})