首页 > 解决方案 > 函数在完成nodejs中另一个文件中的代码之前返回?

问题描述

我有一个模型中的函数,我从我的控制器调用该模型,但在完成模型中代码的执行之前,它返回到控制器,并在再次完成控制器中的代码后返回模型执行剩余的代码。在下面的代码中,当我调用一个函数 od 模型时,它执行 a 行并继续到 b 行,但在 b 行之后,它不会转到 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);
        }
    })
}

标签: node.jsmongodbasync-await

解决方案


推荐阅读