javascript - 通过具有多个占位符和 SELECT 的 NodeJS 批量插入到 MYSQL
问题描述
我无法让以下工作正常进行。任何帮助将不胜感激
var values = [
['Product1', 1, 1],
['Product2', 1, 1],
];
dbConn.query(
'INSERT INTO tblQuoteItems (ProductIDFK,QuoteIDFK,CustomerIDFK) VALUES ((SELECT ProductIDPK FROM tblProducts WHERE ProductName=?),?,?)',
[values],
function (err, res) {
if (err) {
result(null, err);
} else {
result(null, res);
}
}
);
错误响应表明它将所有数组转储到第一个占位符而不是每个占位符一个值并迭代数组元素的数量。这是从上面创建的 SQL:
INSERT INTO tblQuoteItems (ProductIDFK,QuoteIDFK,CustomerIDFK) VALUES ((SELECT ProductIDPK FROM tblProducts WHERE ProductName=('Product1', 1, 1), ('Product2', 1, 1)),?,?)
解决方案
对于任何可能处于相同情况的人。我找到的答案是创建并使用一个临时表,然后从中选择来查找外键 ID。我无法找到一种方法来使用 Nodejs MySQL 库中的占位符来单独映射到数组中的每个元素。
推荐阅读
- sql-server - JetBrains Rider 在 Mac 上启用 ASP.NET MVC 的迁移
- android - 键盘在使用 Galaxy S9 的 react-native 应用程序中出现但很快消失
- ios - 选择 DataPicker Swift 4 的默认值
- python - 将 Rainbow 矩阵转换为 RBG 并保存为 PNG
- c++ - 如何使用 QPainter 缩放文本以适合边界框?
- javascript - 一个 div 到 javascript 数组的列表(没有 jquery)
- java - 使用布尔类方法比较两个 Date 对象
- java - java servlet空点异常
- string - 如何定义多个 sharedPreferences?
- configuration - 不同虚拟主机中的共享名册组如何相互存在?