【问题标题】:JS Node returning only numbers and not proper valuesJS 节点只返回数字而不是正确的值
【发布时间】:2019-01-17 23:35:27
【问题描述】:

我正在尝试使用 js 节点显示一个 mysql 查询结果,以便稍后将其输出到网页。

目前,我只是将查询的结果输出到控制台,代码如下:

var mysql = require('mysql');
const querystring = require('querystring')

var connection = mysql.createConnection({
    host    : 'localhost',
    user    : 'webuser',
    password: 'p0ssw0rd',
    database: 'balancesheet2'
});

connection.connect(function(err) {
    if (err) throw err;
    console.log('Connected!');
    connection.query('SELECT * FROM balancesheet2.orders', function (err, result, fields) {
    if (err) throw err;
    result = querystring.stringify(result,' | ',' :=');
    console.log('Result: ' + result);
    });

});

我得到的结果如下:

Result: 0 := | 1 := | 2 := | 3 :=

我不确定问题出在哪里,是代码的问题,还是数据库的某个地方?

【问题讨论】:

  • 在结果数组上调用querystring.stringify 似乎是一件相当奇怪的事情。您期望从中得到什么结果?
  • 只做console.log(result),省略querystring.stringify.. Node.js 的console.log 在显示对象属性方面并不是最好的,如果你在它前面加上一个字符串,那就更糟了,因为更好的输出,你也可以考虑 util.inspect,-> nodejs.org/api/util.html#util_util_inspect_object_options
  • @Keith 我不确定它是如何或为什么起作用的,但是上次我尝试它只是给了 [object, object],我不确定这是我更改的访问权限还是什么。
  • 如果你只是这样做 -> console.log(result),它会正常工作,.. 但是如果你这样做 console.log("something:" + result) 它不会正常工作.. 那是因为 Object.toString() 返回[object Object] .
  • @Keith +1 就是这么简单谢谢

标签: javascript mysql node.js mysql-workbench


【解决方案1】:

您的result 是一个数组,因此您可能需要循环到result 的内容才能打印出值,否则现有代码只是打印数组的索引。另请注意,querystring.stringify() 方法通过遍历对象的“自己的属性”从给定的 obj 生成 URL 查询字符串。

【讨论】:

  • 这是一件很奇怪的事情,但querystring.stringify 将循环通过result,这就是为什么 OP 得到的数字(01 等)是数组本身的属性。所以问题是为什么这些值都是空白的。
  • @T.J.Crowder 是的,为了实现这一点,OP 需要遍历 result 并为每个对象执行 querystring.stringify()
  • 好吧,也许。这取决于他/她真正想要达到的目标。
  • 当我第一次在没有 stringify 的情况下运行脚本时,结果都是 [object, object]。所以我研究了解决方案并找到了 querystring.stringify()。我不确定我会使用什么循环或如何去做
  • @PeterCollins 你想达到什么目的?你的预期输出是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多