Функция возвращает до завершения кода в другом файле в nodejs? - PullRequest
0 голосов
/ 29 января 2020

У меня есть функция, которая есть в модели, и я вызываю эту модель из моего контроллера, но перед завершением выполнения кода в модели она возвращается к контроллеру, а после повторного выполнения кода в контроллере возвращается к модели, чтобы выполнить оставшийся код. В приведенном ниже коде, когда я вызываю функцию od model, она выполняет строку a и продолжается до строки b, но после строки b она не будет go до строки c, вместо этого она возвращается к контроллеру и выполняет строку "vara = 0 ;» и далее коды контроллера и после завершения выполнения всех кодов снова возвращается модель и выполняет строку c и другие коды, пожалуйста, дайте мне несколько советов?

*Controller*
 const invoicePdfResp = await PdfModel.generateInvoicePdf(invoiceId);
 var a = 0;

*Model*
exports.generateInvoicePdf = async function(invoiceId){

a.    await Invoice.findById(invoiceId, async function(err, doc) {
        if(!err && doc!=null){
            var title = doc.title;
            var description = doc.description;
            var interestAmount = doc.interest;
            var grandTotalAmount = doc.totalAmount;
            var totalAmount = grandTotalAmount - interestAmount;
            var userName = '';
            var itemList = [];
b.            await User.findById(doc.created_by, async function(err1, doc1) {
c.              if(doc1!=null){
                    userName = doc1.firstname + " " + doc1.lastname;
                    InvoiceItem.find({'invoice_id':doc.id}, async function(err2, doc2) {
                        if(doc1.length!=0){
                            itemList = doc2;
                            const pdfDoc = new PDFDocument({margin: 25});
                            //some pdf generation code
                            pdfDoc.end();
                        }
                    })
                }else{
                    response = {
                        'message':'failed'
                    }
                    res.send(response);
                }
            });
        }else{
            response = {
                'message':'failed'
            }
            res.send(response);
        }
    })
}
...