【问题标题】:nodejs: Async and find issuesnodejs:异步并查找问题
【发布时间】:2016-04-19 06:56:27
【问题描述】:

我有一个数组,对于每一行我需要做 findIfExist 并保存到 mongodb。代码在这里:

router.post('/namespaceUpload', function(req, res,next) {
   var data=req.body;
   var totalRows=data.allRows.length;

   var conceptObject ={};
   var existingConcept;

   for (var i=0;i<totalRows;i++){
        async.series([
            conceptPrepare,
            conceptFind,
            conceptSave,
            ], function (err, result) {
                    console.log('kraj');
                    res.json('Ok'); 
        });
    }

    function conceptPrepare(callback){
        conceptObject.name= data.allRows[i].name;
        conceptObject.user= data.userId;
        callback();
    }
    function conceptFind(callback){
        namespaces.find({name: conceptObject.name}, function(err, result) { 
        if (err)
            next(err);
        else {
            if (result.length==0){
                console.log('0');
                existingConcept='';
            } else {
                console.log(result.length);
                existingConcept=result[0];
            }
        }
        callback();
        });
    }


    function conceptSave(callback){
        var namespace = new namespaces();
        if (existingConcept==''){
            namespace.name=conceptObject.name;
            namespace.description=conceptObject.description;
            namespace.lastUpdate.user=conceptObject.user;
            namespace.save(function(err) {
            if (err)
             return next(err);
             callback();             
            })

        }

    }

所以我使用了 async.series,但只有最后一条记录写入数据库的次数与我拥有的数组成员数一样多。另外,我收到一个错误“发送后无法设置标题”。有什么想法吗?

【问题讨论】:

标签: node.js mongodb express mongoose async.js


【解决方案1】:

您收到 Can't set headers after they are sent 错误消息,因为您不允许返回 smtg,例如:res.send,res.render 不止一次,但在您的 for 循环中,它变为 totalRows 次 尝试在循环结束时返回一个值

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2011-06-06
    • 2015-07-08
    相关资源
    最近更新 更多