带有express数组参数的节点mysql批量插入

带有express数组参数的节点mysql批量插入,mysql,arrays,node.js,Mysql,Arrays,Node.js,我遇到了一种情况,需要在节点项目中使用批量插入 这当然已经在这里得到了回答: 但是,我有一个express项目,用于创建api。这些参数被转换成一个数组,我在使用该数组进行大容量插入时遇到了问题。每当我尝试使用该路由时,我都会得到一个错误error:ER\u error\u VALUE\u COUNT\u ON\u ROW:Column COUNT与第1行的VALUE COUNT不匹配 经过一番挖掘,我发现它试图插入: ['foo', 'bar', 'test'] ['foo'] ['bar'

我遇到了一种情况,需要在节点项目中使用批量插入

这当然已经在这里得到了回答:

但是,我有一个express项目,用于创建api。这些参数被转换成一个数组,我在使用该数组进行大容量插入时遇到了问题。每当我尝试使用该路由时,我都会得到一个错误
error:ER\u error\u VALUE\u COUNT\u ON\u ROW:Column COUNT与第1行的VALUE COUNT不匹配

经过一番挖掘,我发现它试图插入:

['foo', 'bar', 'test']
['foo']
['bar']
['test']
当我需要它插入:

['foo', 'bar', 'test']
['foo']
['bar']
['test']
总之,以下是全部代码:

路线 路由呼叫者 试试这个

var datatoDB = [];
req.query.array.forEach(function(entry) {
    console.log(entry);
    datatoDB.push([entry]);
});
在这里,我们试图将此
['foo',bar','test']
转换为此
[[[foo]],[“bar”],[“test”]
。 现在,在函数中使用datatoDB

router.post("/", function (req, res, next) {
    db.query(
        "REPLACE INTO user (Name) VALUES ?", 
        [datatoDB],
        function (error, response) {
            if (error) throw error;

            console.log(response);
         }
    )
});

因此,您的方法更接近,它插入第一个值,然后完成。然后我再次回顾了我在帖子中提到的答案,并将其包装在另一个数组中,如
[datatoDB]
,但返回了相同的列计数错误。似乎我的sql语法是错误的,我确实需要额外的一组括号。如果您可以更改您的答案,以便查询读取
REPLACE-INTO-user(Name)VALUES?,[datatoDB]
我将乐意接受它,以便它可以帮助其他人解决类似问题。
router.post("/", function (req, res, next) {
    db.query(
        "REPLACE INTO user (Name) VALUES ?", 
        [datatoDB],
        function (error, response) {
            if (error) throw error;

            console.log(response);
         }
    )
});