würde ich vorschlagen, eine allgemeine Methode zum Erstellen von Abfragen auszuführen, können Sie es nach Ihren Anforderungen ändern.
Hinweis: fortlaufend müssen Sie die Zeile verwalten, die Sie in resolve(rows)
zurückgeben. Parallel werden alle Zeilen im letzten successCallback result
Parameter als Array von Objekten erzeugt.
function deletePoint(PointObj, door_id){
var query = {
text : '`DELETE FROM table1 WHERE user_id=? and door_id=?`',
placeholder_arr : [PointObj.user_id, door_id],
};
var query2 = {
text : '`DELETE FROM table2 WHERE user_id=? and door_id=?`',
placeholder_arr : [PointObj.user_id, door_id],
};
//do this if you want to execute the queries sequentially
mySQLQuery(query).then(mySQLQuery(query2)).then(successCallback).catch(errorCallback);
//do this if you want to execute the queries parallely
var query_arr = [mySQLQuery(query),mySQLQuery(query2),...];
Promise.all(query_arr).then(successCallback,errorCallback)
function successCallback(result){
console.log('done',result);
}
function errorCallback(err){
console.log('Error while executing SQL Query',err);
}
}
function mySQLQuery(query) {
var connection = jonMySQL.getMySQL_connection();
return new Promise(function(resolve, reject) {
try {
connection.query(query.text, query.placeholder_arr, function(err, rows, fields) {
if (err) {
return reject(err);
} else {
return resolve(rows);
}
});
} catch (err) {
return reject(err);
}
});
Außerdem können Sie immer async Modul verwenden,
async.parallel
für die parallele Ausführung,
async.waterfall
für sequentielle Ausführung mit Werten von einer Funktion zur anderen weitergegeben oder
async.series
wenn keine Werte müssen zwischen sequentiellen Funktionen übergeben werden.
Sie können zweite Abfrage im ersten Rückruf schreiben und dann – abdulbarik