使用NodeJS为异步函数分配变量

时间:2019-12-28 11:06:32

标签: node.js asynchronous async-await

我正在尝试为REST API创建一个函数,该函数基于Mongodb collection(使用mongoose)返回一些统计信息以及(将来)其他计算结果。 问题是我想处理从函数中“查询”中获得的结果。这是现在的全部内容:

Listing = require('../../../models/listing'); // <--- MONGOOSE MODEL


async function priceCat(id) {  // <---- BASIC FUNCTION THAT'S GOING TO DO THE CALCULATIONS

    var nListing = await totalDocs(id);
    var makes = await countUniqMakes(id);

};

// FUNCTIONS THAT CALL THE DB TO GET THE INFO BACK

function totalDocs(id) { 
    Listing.countDocuments({catFrom: id}, (err, res) => {
       return res;
    })
}

async function countUniqMakes(id) {
    let makes = {};
    Listing.find({catFrom: id}).distinct('make', async (err, res) => {
        for (let i = 0; i < res.length; i++) {
            const make = res[i];
            await Listing.countDocuments({make: make}, (err, res) => {
                makes[make] = res;
            });
        }
        console.log(makes);
        return makes
    });
}

module.exports = { priceCat };

为了正确地分配变量nListingmakes,我尝试使用async await协议(或任何所谓的协议),但在我使用 m尝试以控制台方式登录主要功能,它会产生undefined的任何变量。 因此,我确定它与NodeJS的async字符有关,但我不知道它出了错,因为我正在使用async await

谢谢。

0 个答案:

没有答案