多行插入使用Knex.js

我试图用Knex.js构build一个多行插入查询

我的post请求包含一个格式为以下格式的variables: [{addon_name:'sugar'},{addon_name:'milk'}]

我的数据库表只有一列,即addon_name

我的节点应用程序中的knex查询如下

 knex(`<table_name>`).insert(req.body.`<param_name>`)) 

预期的操作

 insert into `<tablename>`(`addon_name`) values (sugar), (milk); 

但代码dosn't工作。 任何意见 ?

错误详情

 { [Error: insert into `table_name` (`0`, `1`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `17`, `18`, `19`, `2`, `20`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `3`, `30`, `31`, `32`, `33`, `34`, `35`, `36`, `37`, `38`, `39`, `4`, `40`, `41`, `5`, `6`, `7`, `8`, `9`) values ('[', '{', 'm', 'e', ':', '\'', 's', 'u', 'g', 'a', 'r', '\'', 'a', '}', ',', '{', 'a', 'd', 'd', 'o', 'n', '_', 'n', 'd', 'a', 'm', 'e', ':', '\'', 'm', 'i', 'l', 'k', '\'', 'd', '}', ']', 'o', 'n', '_', 'n', 'a') - ER_BAD_FIELD_ERROR: Unknown column '0' in 'field list'] code: 'ER_BAD_FIELD_ERROR', errno: 1054, sqlState: '42S22', index: 0 } 

谢谢。 我在post方法中将input的结构更改为逗号分隔的string。 这样就可以更轻松地parsinginput,并按照我需要的方式进行build模。

岗位方法input:“牛奶,糖”

 //Knex accepts multi row insert in the following format [{},{}] => we need to //model our input that way var parsedValues = []; try { var arr = req.body.addons.split(','); }catch(err){ return res.send({ "Message": "405" }); // Data not sent in proper format } for (var i in arr) { parsedValues.push({addon_name: arr[i]}); } console.log(parsedValues); knex(`<table_name>`).insert(parsedValues).then(function (rows){ console.log(rows); return res.send({ "Message": "777" }); // Operation Success }).catch(function (err){ console.log(err) return res.send({ "Message": "403" }); // PK / FK Violation }); 

req.body.<param_name>总是一个string。 很可能这会为你工作:

 knex(table_name).insert(JSON.parse(req.body.param_name))); 

你在错误中看到的是Knex将string视为字符数组,试图将其推送到表中。

在错误中,以下内容:

 values ('[', '{', 'm', 'e', ':', '\'', 's', ... 

实际上是你的string被分解了: [{me:\'s...