Я не могу добраться до данных, даже если я использую структуру PROMISE и ASYNC / AWAIT - PullRequest
0 голосов
/ 16 февраля 2019

Я хочу сначала заполнить массив, а затем визуализировать страницу, я использую async / await, но он пытается сначала визуализировать страницу, а затем после заполнения массива

Консольный вывод:

 --*--*--*--*--*--*--*-- Render --*--*--*--*--*--*--*--

[]

.....

{Данные}

{Данные}

{Данные}

{Данные}

.....

Я искал и проверял все асинхронные / ожидающие структуры

Shares.findAll({

        limit: 12,
        offset: (req.params.page - 1) * 12,
        order: [
            ['createdAt', 'DESC']
        ]
    })
    .then(shared => {

        function loop(){
            shared.forEach(data => {
                if(data.dataValues.tableName === 'Pr'){
                    async function add(){  
//It is coming here but doesn't anything and going to outside the function
                        let product = await Products.findOne({where: {ID: data.dataValues.shareID}});
                        return product.dataValues;
                    }
                    add().then(data => {
                        console.log(data)
                        allData.push(data);
                    });
                }else if(data.dataValues.tableName === 'Nt'){
                    async function add(){
//It is coming here but doesn't anything and going to outside the function
                        let note = await Notes.findOne({where: {ID: data.dataValues.shareID}});
                        return note.dataValues;
                    }
                    add().then(data => {
                        console.log(data)
                        allData.push(data);
                    });
                }else if(data.dataValues.tableName === 'Ad'){
                    async function add(){
//It is coming here but doesn't anything and going to outside the function
                        let advertisement = await Advertisements.findOne({where: {ID: data.dataValues.shareID}});
                        return advertisement.dataValues;
                    }
                    add().then(data => {
                        console.log(data)
                        allData.push(data);
                    });
                }
            });
        }
        async function proccess(){
            await loop();
            await Promise
                .resolve(allData)
                .then(data => {
                    console.log('--*--*--*--*--*--*--*-- Render --*--*--*--*--*--*--*--')
                    console.log(data)
                    if(typeof data !== 'undefined')
                        if(data.length > 0)
                            res.render('home', {title: 'Anasayfa', Data: data, Count: page, Page: req.params.page});
                });
        }
        proccess();
    })
    .catch(error => {
        console.log(error);
        res.redirect(url.format({
            pathname: '/hata',
            query:{
                errorMessage: error.errors[0].message
            }
        }));
    });

Я хочу сначала заполнить массив, а затем отобразитьстраница

...