Вложенная функция asyn c с картой массива, empy response - PullRequest
0 голосов
/ 10 апреля 2020

Проблема в том, что переменная 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);
    })
}

Спасибо.

...