Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node/MySQL:Insert只在第一次工作_Javascript_Mysql_Sql_Node.js_Insert - Fatal编程技术网

Javascript Node/MySQL:Insert只在第一次工作

Javascript Node/MySQL:Insert只在第一次工作,javascript,mysql,sql,node.js,insert,Javascript,Mysql,Sql,Node.js,Insert,我对node(目前是v6)和mysql有问题 节点代码正在服务器端运行,未收到任何错误。代码第一次起作用;但是,随后的时间,名称和说明值作为空字符串输入,数量列作为0(默认值) 已正确插入创建的、pid和id(自动递增)列的值。我不知道为什么第一次这样做效果很好,之后就不起作用了 编辑:当我从addMany获取输出的查询并将其直接输入mysql时,它每次都工作 我如何让它每次都正常工作?衷心感谢您的帮助 表架构: CREATE TABLE `some_table` ( `id` int(11

我对node(目前是v6)和mysql有问题

节点代码
正在服务器端运行,未收到任何错误。代码第一次起作用;但是,随后的时间,
名称
说明
值作为空字符串输入,
数量
列作为
0
(默认值)

已正确插入创建的
pid
id
(自动递增)列的值。我不知道为什么第一次这样做效果很好,之后就不起作用了

编辑:当我从
addMany
获取输出的查询并将其直接输入mysql时,它每次都工作

我如何让它每次都正常工作?衷心感谢您的帮助

表架构:

CREATE TABLE `some_table` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `pid` int(11) unsigned NOT NULL,
  `qty` int(11) unsigned NOT NULL DEFAULT '0',
  `name` varchar(128) NOT NULL,
  `description` text NOT NULL,
  `created` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `k_pid` (`pid`),
  CONSTRAINT `fk_some_table_p_pid` FOREIGN KEY (`pid`) REFERENCES `p` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1337 DEFAULT CHARSET=utf8;
节点代码:

function addMany(items, callback) {
    const itemsArray = Array.isArray(items) ? items : [items];
    const params = itemsArray.map((item) => {
        return [
            item.pid,
            item.quantity,
            item.name,
            item.description,
            Math.floor(new Date() / 1000),
        ];
    });

    const queryStr = 'INSERT INTO some_table (`pid`, `quantity`, `name`, `description`, `created`)  VALUES ?;';
    db.executeQuery(queryStr, [params], callback);
}
首次运行:

const items1 = [ 
    { name: 'name__1', description: 'some desc 1', quantity: 1, pid: '17771' },
    { name: 'name__2', description: 'some desc 2', quantity: 1, pid: '17771' } 
];
addMany(items1, () => {});
addMany
创建并运行此查询:

INSERT INTO some_table 
    (`pid`, `quantity`, `name`, `description`, `created`)  
VALUES 
    ('17771', 1, 'name__1', 'some desc 1', 1502913412), 
    ('17771', 1, 'name__2', 'some desc 2', 1502913412);
INSERT INTO some_table 
    (`pid`, `quantity`, `name`, `description`, `created`)  
VALUES 
    ('17771', 1, 'name__3', 'some desc 3', 1502913412), 
    ('17771', 1, 'name__4', 'some desc 4', 1502913412);
MYSQL显示以下数据:

id      pid             quantity        name        description     created
6423    17771           1               name__1     some desc 1     1502913412
6424    17771           1               name__2     some desc 2     1502913412
id      pid             quantity        name        description     created
6423    17771           1               name__1     some desc 1     1502913412
6424    17771           1               name__2     some desc 2     1502913412
6425    17771           0                                           1502913412
6426    17771           0                                           1502913412
第二轮:

const items2 = [ 
    { name: 'name__3', description: 'some desc 3', quantity: 1, pid: '17771' },
    { name: 'name__4', description: 'some desc 4', quantity: 1, pid: '17771' } 
];
addMany(items2, () => {});
addMany
创建并运行此查询:

INSERT INTO some_table 
    (`pid`, `quantity`, `name`, `description`, `created`)  
VALUES 
    ('17771', 1, 'name__1', 'some desc 1', 1502913412), 
    ('17771', 1, 'name__2', 'some desc 2', 1502913412);
INSERT INTO some_table 
    (`pid`, `quantity`, `name`, `description`, `created`)  
VALUES 
    ('17771', 1, 'name__3', 'some desc 3', 1502913412), 
    ('17771', 1, 'name__4', 'some desc 4', 1502913412);
MYSQL显示以下数据:

id      pid             quantity        name        description     created
6423    17771           1               name__1     some desc 1     1502913412
6424    17771           1               name__2     some desc 2     1502913412
id      pid             quantity        name        description     created
6423    17771           1               name__1     some desc 1     1502913412
6424    17771           1               name__2     some desc 2     1502913412
6425    17771           0                                           1502913412
6426    17771           0                                           1502913412

addMany
显示的查询看起来正常,但是您是如何获得此问题的查询字符串的?因为看起来显示的查询字符串不是正在运行的字符串。我正在使用npm模块
mysql
,它将参数数组转换为适当的mysql语法。这就是您所指的吗?是的,但是要验证查询:您是从日志中获取查询的,还是您自己(在第二次运行时)键入此处所述的查询?因为这个查询看起来不错,我想如果你在MySQL中手动测试的话,那就行了。啊,我明白了。我修改了回调函数以输出完成的查询。我在这里复制了它:。编辑:
db
只是运行
mysql.connect()
的函数的包装,并在回调中返回
mysql.query
,然后断开连接。奇怪。。。您可以创建一个代码段进行测试吗?您为
addMany
显示的查询看起来正常,但是您是如何获得此问题的查询字符串的?因为看起来显示的查询字符串不是正在运行的字符串。我正在使用npm模块
mysql
,它将参数数组转换为适当的mysql语法。这就是您所指的吗?是的,但是要验证查询:您是从日志中获取查询的,还是您自己(在第二次运行时)键入此处所述的查询?因为这个查询看起来不错,我想如果你在MySQL中手动测试的话,那就行了。啊,我明白了。我修改了回调函数以输出完成的查询。我在这里复制了它:。编辑:
db
只是运行
mysql.connect()
的函数的包装,并在回调中返回
mysql.query
,然后断开连接。奇怪。。。你能为测试创建一个代码段吗?