Я медленно изучал node.js, чтобы лучше интегрировать многие текущие операции (mysql) и учет Xero.
У меня есть несколько таблиц в mysql, по одной для [«счета-фактуры», «счета», «товары», «организации», «поступления», «taxRates», «пользователи», trackingCategories »], и каждая из этих таблиц имеет столбец JSON с тем же именем, что и таблица, в которой он находитсяЭто НЕ вопрос json.
Отправка запроса типа "" select "+ wewant1 [i] +" from "+ wewant1 [i]" в основном проста "выбрать счета из счетов" и проста для повторениячерез.
Я могу получить результаты mysql в списке, но мне нужно получить каждый отдельный «список» в виде массива результатов.
В конечном итоге я бы хотел иметь возможность ссылаться на результаты из «select».счета-фактуры из счетов-фактур "как массив" счетов-фактур "в узле (счета-фактуры [0], счета-фактуры [1] и т. д.).
Я пытался избежать" ада обратного вызова "и до сих пор не могу заставить это работать ...Любые советы приветствуются!
Вот текущий код:
var mysql = require('mysql');
var con = mysql.createConnection({
host: "10.0.1.103",
user: "badayaba",
password: "yadabuba",
database: "xeroetc"
});
(async function() {
let wewant1 = ["invoices", "accounts", "items", "organisations", "receipts", "taxRates", "users", "trackingCategories"];
function getmydata(sql, result, callback) {
var query = con.query(sql);
query.on('result', function(row) {
callback(null, row);
});
};
for (let i = 0; i < wewant1.length; i++) {
var sql = "select " + wewant1[i] + " from " + wewant1[i];
getmydata(sql, wewant1[i], function querydata(err, result) {
console.log(err || result);
return result;
});
};
con.end();
})();
20180910 22:00 GMT-6 Спасибо, Стивен!Я думаю, что я получил это с этим:
const XeroClient = require('xero-node').AccountingAPIClient;
const XeroErrors = require('xero-node').XeroError;
var mysql = require('mysql');
const config = {
appType: "private",
consumerKey: "_____",
consumerSecret: "_____",
privateKeyPath: "../../../ssl/_____.pem"
};
var con = mysql.createConnection({
host: "_____",
user: "_____",
password: "_____",
database: "xeroetc"
});
(async function(){
let wewant1 = ["invoices","accounts","items","organisations","receipts","taxRates","users","trackingCategories"];
let xero = new XeroClient(config);
function getmydata(it, callback) {
var sql = "select "+it+" from "+it;
con.query(sql, function (err, result, fields) {
if (err) throw err;
callback(null,result);
});
};
const promises = wewant1.map(it => {
return new Promise((resolve, reject) => {
getmydata(it, function querydata(err, result) {
if (err) {
reject(err);
} else {
resolve(result);
}
});
})
});
Promise.all(promises)
.then(results => {
//results is a array of the resolved promises
invoices=results[0];
accounts=results[1];
items=results[2];
organisations=results[3];
receipts=results[4];
taxRates=results[5];
users=results[6];
trackingCategories=results[7];
console.log(invoices);
})
.catch(err => {})
.then(() => {
con.end();
})
})();