gpt4 book ai didi

javascript - 为什么这个 node-mysql 插入会产生一个数组?

转载 作者:搜寻专家 更新时间:2023-11-01 00:44:30 25 4
gpt4 key购买 nike

根据node-mysql documentation ,向主键为auto_increment的表插入一行的结果是一个对象,其中一个字段是insertId。但是,我在运行下面的代码时看不到这一点。相反,我看到结果是一个双元素数组,其第一个元素是所需类型的对象,但其第二个元素是 undefined。特别是,下面的代码打印:

[ { fieldCount: 0,
affectedRows: 1,
insertId: 12,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 },
undefined ]

谁能解释文档与观察到的行为之间的这种差异?

代码:

var mysql = require("mysql")
var Q = require("q")


var db = {
"host": "localhost",
"user": "root",
"password": "xyz",
"database": "study"
}

var pool = mysql.createPool(db);
var getConnection = Q.nbind(pool.getConnection, pool)

getConnection().then(function (connection) {
Q.ninvoke(connection, 'query', "insert into tsheet (cname) values('reformation');")
.then(
function (rslt) {
console.log(rslt)
process.exit(0)
})
}).done()

这是表格:

mysql> describe tsheet;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| cid | int(11) | NO | PRI | NULL | auto_increment |
| cname | varchar(256) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

最佳答案

node-mysql expects a callback具有三个 参数:err、rows、fieldsQ 将后两个参数放入一个数组中,以便仅使用一个参数调用下一个函数。 (err.catch 中单独处理)。由于这是一个 INSERT,因此未定义 fields 参数。

如果您想分别获取这两个参数,请使用 .spread :

Q.ninvoke(connection, 'query', "insert into tsheet (cname) values('reformation');")
.spread(
function (rslt, fields) {
console.log(rslt)
process.exit(0)
});

关于javascript - 为什么这个 node-mysql 插入会产生一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23504569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com