async函数在节点js中不起作用

时间:2017-09-28 14:20:59

标签: node.js asynchronous loopback

我正在尝试开发一个APP,我必须根据他们在主列表中的兴趣/兴趣来增加或减少用户数。我在Loop js的帮助下在Node js中完成它。这是我的代码,其中我给出了两个兴趣(即素描和骑马):

  async.forEach(data, function (interest) {
        console.log("Interest is", interest);

        Interest.findOne({
            where:
            {
                'name': interest
            }
        }, function (err, interestObj) {
            if (err) {
                //return callback(err, null);
                console.log("error", err);
            }
            else {
                //return callback(null, response);
                console.log("found", interestObj);
                if (!interestObj) {
                    Interest.create({ "name": interest, "count": 1 }, function (err, response) { });

                }
                else {
                    _count = interestObj.count + 1;
                    interestObj.updateAttribute('count', _count, function (e, r) { });
                }
            }
        });

      //  return callback(null, {});
    },function(err){
        console.log("success..!!")
    });
}

但它只显示我输出中的一个。输出结果如下:

    data is [ 'horse-riding', 'skeching' ]
Interest is horse-riding
Interest is skeching
found { name: 'horse-riding', count: 1, id: 59ccff0765055a212491a6bc }
found null

我认为async函数在forEach循环中无法正常工作,但我没有得到代码出错的地方。我想展示用户给予的所有兴趣,那么我应该采取什么行动来做呢?在此先感谢.. !! :)

1 个答案:

答案 0 :(得分:0)

现在正在努力...... !!!

  async.each(data, function (interest, callback2) {
        console.log('Processing ', interest);
        Interest.findOne({
            where:
            {
                'name': interest
            }
        }, function (err, interestObj) {
            if (err) {
                console.log("error", err);
                callback2(err);
            }
            else {
                console.log("found", interestObj);
                if (!interestObj) {
                    Interest.create({ "name": interest, "count": 1 }, function (err, response) { });
                }
                else {
                    _count = interestObj.count + 1;
                    interestObj.updateAttribute('count', _count, function (e, r) { });
                }
                callback2();
            }
        });
    }, function (err) {
        if (err) {
            console.log('Failed to process', err);
        } else {
            console.log('All interests have been processed successfully');
        }
        return callback(err);
    })
};