回调在async.foreachof

时间:2017-12-06 16:31:03

标签: node.js callback

我从我的dao进入回调并进入我的服务,在我的服务中,我已经迭代了要发送给我的dao的对象列表。

我的服务代码

var dao = require('./dao');
var async = require('async');

exports.addUser = function(obj,callback) {
    async.forEachOf(obj,function(value,key,callback){
        dao.addUser(value,function(data){
            callback(data);
        })
    })
}

此回调不会转到我的控制层

控制层

var express = require('express');
var app = express();
var service = require('./service');

app.use(express.urlencoded({ extended: false }));
app.use(express.json());

app.post('/addPerson',function(req,res){
    var obj = req.body;
    console.log(obj);
    console.log("......",obj.name);
    console.log("......",obj.age);
    service.addUser(obj,function(data) {
        console.log("---->",data);
        res.json(data);
    })
})

var server = app.listen(8080,function(){});

我需要将数据发送回浏览器

1 个答案:

答案 0 :(得分:1)

现有代码存在两个问题 1.通过引用callback,您正在调用asyn.forEachOf的callback 2.试图调用你的原始回调(实习生res.json(data))。在这里,您尝试发送多个不可能的响应。

尝试使用async.mapValues代替

exports.addUser = function(obj,callback) {
    async.mapValues(obj,function(value,key,cb){
        dao.addUser(value,function(data){
            cb(null, data);
        })
        }, function(err, result) {
            // result is now a map of results for each key
           callback(result);
      });
}