In meiner Anwendung habe ich zwei verschiedene Tabellen durch ID der ersten (eine zu viele Beziehung) miteinander verwandt. Es sollte zunächst die Daten aus der Frontend-Seite von im JSON-Format sammeln, die wie folgt aussieht:Knoten JS mySQL Tripple-Abfrage und Informationsverlust
cancellation = {
name: someting
id: someting
rule =
[
{someting}, {something}, {something}
]
}
Eine Tabelle für die Stornierung und die zweite für die Regeln wäre. Wenn ich diese Informationen in dieser Reihenfolge einfügen möchte, muss ich zuerst einen Datensatz für die Stornierung einfügen. Machen Sie dann eine Abfrage, um herauszufinden, was eine ID dieses Datensatzes in der Datenbank ist, und fügen Sie danach alle Regeln ein, die diese ID als Fremdschlüssel verwenden. Aber da Node JS asynchron ist, hole ich die Information über die ID der Aufzeichnungsprogrammsterne, um den Rest des Codes auszuführen, und betrachte diese Variable als undefiniert.
app.post('/databaseSend/cancellation', function(req,res){
var cancellationReceived = req.body;
var cancellationID;
var rules = [];
var cancellation = [];
cancellation[0] =
[
cancellationReceived.name,
cancellationReceived.id
]
// inserting data into cancellation table
connection.query("INSERT INTO cancellations (name, User_ID) VALUES ?", [cancellation],
function(err,results){
if(err){console.log(err)}
}
)
//fetching ID of the current record
connection.query("SELECT id FROM cancellations WHERE User_ID = ? AND name = ?", [cancellationReceived.id, cancellationReceived.name],
function(err, results){
var cancellationID = results[0].id;
});
//assigning ID to use it as a foreign key
for(var i = 0; i < cancellationReceived.rule.length; i++)
{
rules[i] =
[
cancellationReceived.rule[i].daysBefore,
cancellationReceived.rule[i].fee,
cancellationReceived.rule[i].type,
cancellationID
]
}
for(var i = 0; i < rules.length; i++)
{
console.log(rules[i]); // ID is undefined
}
});
Wie kann ich dieses Problem lösen? Ich habe versucht, setTimeout zu verwenden, um meinen Code zu pausieren, aber es hat nichts geändert.
Und ich verwende diesen Knotenmodul für mysql ->https://github.com/mysqljs/mysql