Выполнение функций NodeJS в последовательности - PullRequest
0 голосов
/ 01 июня 2019

Я определил библиотеку функций, как показано ниже, чтобы я мог вызывать их динамически.Я вызываю функцию p10 в модуле ниже

module.exports = {
        p3: async function(mongo_db,data){
            mongo_db.collection('release', async function(err,coll){
                for(var i = 0; i <= data.searches.length-1; i++) {
                    var rlsId = data.searches[i].releaseId;
                    //console.log("RELEASE ID " + rlsId);
                    var tdcId = data.searches[i].tdcId;
                    if(rlsId !== null || rlsId !== undefined){
                        result = await  coll.findOne({"_id":ObjectId(rlsId)});
                        if(result){
                            //console.log("this is data searches for index " + i+ " " + JSON.stringify(data.searches[i]) 
                            //      + " and data.searches " + JSON.stringify(data.searches) + " and this is result " + JSON.stringify(result));
                            data.searches[i].releaseId = "release::" + result.initiativeId + "::" + result.name;
                            data.searches[i].tdcId = "testdachar::" +  tdcId;
                            var reservLst = data.searches[i].reservationIds;

                        }
                    }
                }
                return data
                //data_cb(data);
                //cb()
            })
            //return data
        },
        p8: async function(mongo_db, data){
            mongo_db.collection('reservation',async function(err,coll){
                for (var i =0 ; i< data.searches.length; i++){
                    var reservLst = data.searches[i].reservationIds;
                    for (var j=0; j<reservLst.length; j++){
                        var reservDoc = await  coll.findOne({"_id":ObjectId(reservLst[j])});
                        if(reservDoc){
                            data.searches[i].reservationIds[j] = "cardreserve::" + reservDoc.accountId; 
                        }
                    }
                }
                return data;
            })
        },
,
        p10: async function(mongo_db, data, data_cb){
            module.exports.p3(mongo_db,data).then(datax => {module.exports.p8(mongo_db,datax)}).then(data => {data_cb(data)}).catch(err => {console.log("ERROR " + err)});
        }

}

Дело в том, что мне нужно, чтобы эти функции выполнялись последовательно.Я разбил их на разные функции.

Возвращаемая ошибка:

(узел: 17419) UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать 'поиски' свойств неопределенных

Это похоже наФункция p8 не может работать с данными, возвращаемыми p3, потому что она кажется пустой.Я полностью сбит с толку.Пожалуйста, помогите!

...