使用猫鼬异步迭代

时间:2018-08-19 06:24:54

标签: asynchronous mongoose

虽然可以遍历数组并使用findoneandupdate来查找集合并更新数据,但是每次出现错误或null值时,它都会进入循环,有人可以在这里帮助我,我只想显示错误或出现空值消息。

下面是我的API代码示例,请有人可以帮助我。

    api.route('/sendmyVehicle')
        .post(function(req,res){
                                    var j=0;
                                    async.whilst(
                                        function() { return j < req.body.length; },
                                        function(callback) {
                                            var myObj= {};
                                                VehicleMaster.findOneAndUpdate({ _id: req.body[j] },{IsFavourite:false,RegisterUserId:transferingToUserData._id},function(err,vcdata) { 
                                                    if (err) {
                                                        dataErr.push(err.message);
                                                        callback(err);
                                                        return
                                                    }
                                                    if(vcdata==null){
                                                        dataErr.push('Invalid Vehicle');
                                                        callback();
                                                        return
                                                    }
                                                    VehicleOdoMeterMaster.findOneAndUpdate({ VehicleId: vcdata._id },{RegisterUserId:transferingToUserData._id},function(err,VehicleOdoMeterMasterdata) {
                                                        if (err) {
                                                            dataErr.push(err.message);
                                                            callback(err);return
                                                        }
                                                        Product.findOneAndUpdate({vehicleNo:vcdata.Vehicle_No},{RegisterUserId:transferingToUserData._id},function(err,productTransfer){
                                                            if (err) {
                                                                dataErr.push(err.message);
                                                                callback(err);return
                                                            }   
                                                            if(productTransfer!=null){
                                                                AssignUserProductQR.findOneAndUpdate({"ProductQRCodeId":productTransfer._id},{RegisterUserId:transferingToUserData._id}, {new : true},function(err,userQrData){
                                                                    if (err) {
                                                                        dataErr.push(err.message);
                                                                        callback(err);return
                                                                    }  
                                                                })
                                                            }
                                                        })
                                                        data0.push(vcdata,VehicleOdoMeterMasterdata);  
                                                    })

                                                    j++;
                                                    callback();
                                                }
                                            );

                                        },function(err) {
                                            if (dataErr.length!=0){
                                                res.json({ 
                                                    success:false,
                                                    data:dataErr,
                                                    message: 'Error Occurred while transfer',
                                                    errorCode:null
                                                });
                                                console.log(err);
                                                return
                                            }
                                            if(data0.length==0){
                                                res.json({ 
                                                    success:false,
                                                    data:dataErr,
                                                    message: 'Error Occurred while transfer',
                                                    errorCode:null
                                                });
                                            }else{
                                                res.json({
                                                    success:true,
                                                    data:data0,
                                                    message: "Vehicle Transfered Successfully",
                                                    errorCode:null
                                                });
                                                return
                                            }
                                        }
                                    );

        })

0 个答案:

没有答案