Проблема в том, что переменная arrV
пуста при отправке в res. Я пытался вставить функцию .then()
после первого асинхронного c или вызова return new Promise
после (async () => {
, но результат тот же. Я вставлю основные и другие функции:
router.get('/telegram/chats', (req,res,next) => {
let arrV = [];
(async () => {
let q = await Telegram.getChats();
Object.keys(q).map(async (k, v) => {
let search = await MTel.getChatById(q[k].id,(r) => {
if(!r){
MTel.insertChat([q[k].id,q[k].title,q[k].last_message,0], (p) => {
arrV.push(p);
})
}
});
});
})();
res.send(arrV);
});
Telegram.getChats ():
async function getChats(options) {
let ret = [];
let ok = await client.getChats();
for(var k in ok["chat_ids"]){
let ch = await client.getChat(ok["chat_ids"][k]);
ret.push({id: ch.id, title: ch.title, last_message: ch["last_message"].id});
}
return ret;
}
Mtel.getChatById () и Mtel.insertChat ():
const getChatById = (id,callback) => {
let qq = db.select(table,{id_chat: id},"LIMIT 0,1", (r) => {
return callback(r);
})
}
const insertChat = (obj,callback) => {
let qq = db.insert(table,["id_chat","title","last_message","active"],[obj], (r) => {
return callback(r);
})
}
Спасибо.