javascript - 风 sails JS : How to return a value from a service

标签 javascript asynchronous sails.js

我正在用 sails js 创建一个服务。我想在返回之前更新 totalCount 的值。但问题是当返回在 async.series 的回调中时,我在调用它时得到一个未定义的。我应该怎么做?

var totalCount = 0;

    async.series([
        function getProducts(cb_series){
            Inventory.find({sku_id : sku_id, bay_id : bay_id})
                .then(function(inventory_items){

                    async.each(inventory_items, function(item, cb_each){
                        totalCount = totalCount + item.physical_count;
                        cb_each();
                    }, function(err){
                        if(err)
                            console.log(err);

                        cb_series();
                    });             
                });
        }
    ], function returnResult(err, cb){
        if(err)
            console.log(err);

        return totalCount;
    });

最佳答案

我不太确定您要做什么。但是您可能想在这样的回调中传递 totalCount :

function getProducts(callback){
    Inventory.find({sku_id : sku_id, bay_id : bay_id}).then(
        function(inventory_items){
            callback(null, inventory_items.length)
        }, function(err){
            console.log(err);
            callback(err);
        });
}

如果出现错误,它将以错误作为第一个参数回调,因此对其进行空检查。如果第一个参数为 null,则第二个参数将为数组的长度。

如果您更愿意返回所有产品而不仅仅是长度(正如函数名称所暗示的那样),那么它非常相似:

function getProducts(callback){
    Inventory.find({sku_id : sku_id, bay_id : bay_id}).then(
        function(inventory_items){
            callback(null, inventory_items)
        }, function(err){
            console.log(err);
            callback(err);
        });
}

对于第一种情况,你会像这样使用它:

getProducts(function(err, productCount) {
    if(err) {
        console.log(err);
        return err;
    } else {
        var totalCount = productCount;
    }
    //etc etc...
}

...或者第二种情况:

getProducts(function(err,products) {
    if(err) {
        console.log(err);
        return err;
    } else {
        var productArray = products;
    }
    //etc etc...
}

关于javascript - 风 sails JS : How to return a value from a service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29172620/

相关文章:

javascript - promise 的 Node 模式

javascript - 如何向sails.js 中的所有模型添加实例方法?

node.js - 错误 : Redis connection to 10. 130.212.246:6379 失败 - 连接 ETIMEDOUT

php - 如何检测访客的国家/地区?

javascript - 在worker.addEventListener中发送另一个postMessage

javascript - 微软AJAX工具包日历控件: how do you programmatically close using Javascript?

javascript - 将一系列数字的每种可能组合分配给变量

django - 为Django项目选择一个好的异步解决方案

node.js - 将 Sequelize 与 Redshift 结合使用

javascript - 在异步函数中设置和访问全局对象