Node.js 回调在async.foreachof内不起作用

Node.js 回调在async.foreachof内不起作用,node.js,callback,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){

我从我的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(){});
控制层

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.通过引用
callback
您正在调用asyn.forEachOf的
callback
2.尝试调用您的原始回调(实习生执行
res.json(数据)
)。在这里,您试图发送多个响应,这是不可能的

尝试改用
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);
      });
}

Muthukumar migavum nandri,我猜你是泰米尔人,无论如何!非常感谢你,伙计,你刚刚救了我的命!!!!!!!bro我能知道为什么我不能使用foreach而不是mapvalues吗?foreach不返回每次执行的结果,但mapvalues会返回。为什么cb(null,数据)而不是cb(数据)cb(null,数据)对应于函数(err,结果)。因此,如果在添加用户时捕获到任何错误,则可以传递该错误来代替null。更多信息