私のアプリケーションでは、私は最初の1つのID(お互いに多くの関係)のお互いに関連する2つの異なるテーブルがあります。これは、最初にこのようになりますJSON形式によってフロントエンド側からデータを収集する必要があります。ノードJS mySQLトリプルクエリと情報の紛失
cancellation = {
name: someting
id: someting
rule =
[
{someting}, {something}, {something}
]
}
つの表は、キャンセルやルールの1秒間であろう。これらの情報をこの順序に入れたい場合は、まず取り消し用のレコードを1つ挿入する必要があります。次に、データベース内のこのレコードのIDを調べ、その後にこのIDを外部キーとして使用するすべてのルールを挿入するクエリを作成します。しかし、ノードJSは非同期であるため、残りのコードを実行し、この変数を未定義とみなすために、レコードプログラムのスターのIDに関する情報を取得します。
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
}
});
どうすればこの問題を解決できますか?私はコードを一時停止するためにsetTimeoutを使用しようとしましたが、何も変更されませんでした。
そして私は、MySQLのため、このノードモジュールを使用する - >https://github.com/mysqljs/mysql