Node.js 如何使用express.js获取两个收集文档并计算点数?

Node.js 如何使用express.js获取两个收集文档并计算点数?,node.js,express,Node.js,Express,如果要使用两个函数的结果,然后将其用于进一步的计算,则可以使用promises 在本例中,您可以并行执行这两个异步函数。它可以像这样 totalprice= userdata[i].cost/parameterObject.pointvalue) * point); 这里,asyncFunc1()将是您的第一个查找函数 asyncFunc2()将是第二个查找函数 结果[0]和结果[1]将分别是函数的结果 稍后,您可以使用结果进行进一步计算 希望这有帮助 exports.show==函数(req

如果要使用两个函数的结果,然后将其用于进一步的计算,则可以使用promises

在本例中,您可以并行执行这两个异步函数。它可以像这样

totalprice= userdata[i].cost/parameterObject.pointvalue) * point);
这里,asyncFunc1()将是您的第一个查找函数

asyncFunc2()将是第二个查找函数

结果[0]和结果[1]将分别是函数的结果

稍后,您可以使用结果进行进一步计算

希望这有帮助

exports.show==函数(req,res){
Promise.all([
    asyncFunc1(),
    asyncFunc2(),
])
.then(function(result){
    // result is an array and has the response of the functions which is
    // result[0] and result[1]
    ···
   // you can manipulate the result of the functions here
})
.catch(function(err){
    // Receives rejection/error among the Promises
    ···
});
var userdata=[{ “产品代码”:“9563456789”, “成本”:“1000” }, { “产品代码”:“8756348947”, “成本”:“5600” }] var参数object=[]; Parameter.find().exec(函数(错误,参数){ 如果(错误){ 返回句柄错误(res,err); } //我要将参数[0]。值推送到parameterObject parameterObject.push({ pointvalue:参数[0]。值 }); 返回FindProducts(参数对象、函数(数据){ 控制台日志(数据); }); }); 函数FindProducts(parameterObject,回调){ 对于(var i=0;i0){ //现在您可以在这里获得userdata[i].cost的值 //现在您可以在这里获得parameterObject的值 totalprice=userdata[i]。成本/参数对象[0]。pointvalue*point; 返回回调(i,总价); } }); } };
help me out@newbee devi如果您希望有人阅读您的代码,了解您的问题并提出解决方案,请花时间至少格式化它!这就像在任何IDE/编辑器中敲3下键盘一样,或者可能重复@DrakaSAN,您能帮我吗out@mojo:是的,我可以,但是如果你花时间阅读副本,或者任何关于异步编程,您应该知道错误在哪里。您对“plz giv me ze codzzz”的态度根本没有帮助。不运行此函数Product.find(),我添加了console.log(userdata[i].productcode)。它在console中继续只打印9563456789值您将控制台放在哪里了?在while loopwhile中(iPromise.all([ asyncFunc1(), asyncFunc2(), ]) .then(function(result){ // result is an array and has the response of the functions which is // result[0] and result[1] ··· // you can manipulate the result of the functions here }) .catch(function(err){ // Receives rejection/error among the Promises ··· });
exports.show = = function(req, res) {
    var userdata = [{
        "productcode": "9563456789",
        "cost": "1000"

    }, {
        "productcode": "8756348947",
        "cost": "5600"

    }]

    var parameterObject = [];

    Parameter.find().exec(function(err, Parameters) {
        if (err) {
            return handleError(res, err);
        }
        // i want to push Parameters[0].value to parameterObject 
        parameterObject.push({
            pointvalue: Parameters[0].value
        });

        return FindProducts(parameterObject, function(data) {
            console.log(data);
        });
    });

    function FindProducts(parameterObject, callback) {
        for (var i = 0; i < userdata.length; i++) {
            var totalprice = 0;
            findProduct(i, parameterObject,  function(i, price) {
                totalprice += price;
                if (i <= userdata.length) {
                    return callback({
                        "userid": "myuserid",
                        "total": totalprice
                    });
                }
            });
        }
    }

    function findProduct(i, parameterObject, callback) {
        Product.find({
            'productcode': userdata[i].productcode
        }).exec(function(err, Products) {
            if (err) {
                return handleError(res, err);
            }
            var point = 0;
            if (!Products) {
                point = 0;
            } else if (Products[0].product.point > 0) {
                point = Products[0].product.point;
            }
            if (point > 0) {

                // here you can now get the value of userdata[i].cost 
                // here you can now get the value of parameterObject 
                totalprice = userdata[i].cost / parameterObject[0].pointvalue * point;

                return callback(i, totalprice);
            }

        });
    }


};