【发布时间】:2021-05-03 15:09:11
【问题描述】:
我创建了一个 node.js 查询,它有时可以正常工作,它是一个俱乐部的插入,然后在第二个查询中插入球员,有一个子查询采用自动增量 id 的最后插入的 id第一个查询,执行后我注意到有时玩家会插入 俱乐部的最后插入 id 应该是,但有时它们被插入但不是与最后一个插入 id 而是与它之前的那个!!!!!!
提示: 我在一切正常的时候观察回调的返回,我看到回调值中的 insertId 是正确的值,但是当我我在回调 insertId = 0 的结果中看到不起作用
问题示例:假设最后插入的俱乐部 id 是 15 ,当问题发生时 我发现插入的玩家插入了 clubid 14 !!!!!!!!!!!!!!!他们应该是 15 但最奇怪的是,我发现有时它们会以正确的值正确插入!!!
它就像一个随机的东西,有时它选择工作,有时不!
这里是邮递员中的json:
{
"userid": 41,
"name": "fc dhya club",
"price": 11,
"players": [
{
"id":1,
"firstname":"aaaaaaa",
"lastname":"ee",
"position":"df",
"price":12.1,
"appearences":2,
"goals":1,
"assists":1,
"cleansheets":1,
"redcards":1,
"yellowcards":1,
"image":"qq"
},
{
"id":2,
"firstname":"aabbbbbbbbbbb",
"lastname":"ee",
"position":"df",
"price":12.1,
"appearences":2,
"goals":1,
"assists":1,
"cleansheets":1,
"redcards":1,
"yellowcards":1,
"image":"qq"
}
]
}
这里是 node.js 代码
const { json } = require("express");
const mysql = require('mysql2');
const pool = require("../../config/database");
module.exports = {
create: (data, callback) => {
var myArray = new Array();
data.players.forEach((player) => {
var playerModel = {
id : player.id,
firstname : player.firstname,
lastname : player.lastname,
position : player.position,
price : player.price,
appearences : player.appearences,
goals : player.goals,
assists : player.assists,
cleansheets : player.cleansheets,
redcards : player.redcards,
yellowcards : player.yellowcards,
image : player.image
};
myArray.push(playerModel);
});
var id;
pool.query(
'insert into club(userid,name,price) values(?,?,?)',
[
data.userid,
data.name,
data.price
],
(error, result) => {
if (error) {
callback(error);
}
return callback(null, result);
},
);
for(var item of myArray) {
pool.query(
'insert into players(id,firstname,lastname,position,price,appearences,goals,assists,cleansheets,redcards,yellowcards,image,clubid Where clubid = ( SELECT id from club where id > ? ORDER BY id DESC limit 1 )) values (?,?,?,?,?,?,?,?,?,?,?,?, ( SELECT id from club where id > ? ORDER BY id DESC limit 1 ) )',
[
item.id,
item.firstname,
item.lastname,
item.position,
item.price,
item.appearences,
item.goals,
item.assists,
item.cleansheets,
item.redcards,
item.yellowcards,
item.image,
0
],
(error, results, fields) => {
if(error){
callback(error);
}
return callback(null, results);
},
);
}
},
};
当查询无法正常工作时,这里是邮递员的屏幕截图
当插入工作正常时在这里
【问题讨论】:
标签: javascript mysql node.js express node-mysql