使用For循环遍历异步功能(数据库查询,Node.js)

某物

我在我项目的最后一部分,我正在尝试从MySQL数据库中的json插入数据,这是我的示例数据

{"data": 
[{"cpos": "g", "cfname": "e", "clname": "ejercito", "cvcount": "4"}, 
{"cpos": "g", "cfname": "j", "clname": "ejercito", "cvcount": "5"}]}

而且我的函数正在解析样本数据(抱歉,长函数)

checkPositionCandidateInsertVote: function(ref, prid, json, callback){
    var len = json.data.length;
    for (var i = 0; i < len; i++) {
        var fn = (json.data[i].cfname).toLowerCase();
        var ln = (json.data[i].clname).toLowerCase();
        var c = json.data[i].cvcount;
        console.log(fn, ' ', c);
        switch((json.data[i].cpos).toLowerCase()){
            case "g":
                module.exports.getCandiName(fn, ln, "Governor", function(dataa){
                    //dataa.id
                    module.exports.insertVotes(prid, ref, c, dataa.id, function(res){
                    });
                });
                break;
            case "vg":
                module.exports.getCandiName(fn, ln, "Vice Governor", function(dataa){
                    //dataa.id
                    module.exports.insertVotes(prid, ref, c, dataa.id, function(res){
                    });
                });
                break;
            case "m":
                module.exports.getCandiName(fn, ln, "Mayor", function(dataa){
                    //dataa.id
                    module.exports.insertVotes(prid, ref, c, dataa.id, function(res){
                    });
                });
                break;
            case "vm":
                module.exports.getCandiName(fn, ln,  "Vice Mayor", function(dataa){
                    //dataa.id
                    module.exports.insertVotes(prid, ref, c, dataa.id, function(res){
                    });
                });
                break;
            case "bm":
                module.exports.getCandiName(fn, ln, "Board Member", function(dataa){
                    //dataa.id
                    module.exports.insertVotes(prid, ref, c, dataa.id, function(res){
                    });
                });
                break;
            case "cg":
            case "cm":
            case "cw":
                module.exports.getCandiName(fn, ln, "Congressman", function(dataa){
                    //dataa.id
                    module.exports.insertVotes(prid, ref, c, dataa.id, function(res){
                    });
                });
                break;
            case "c":
                module.exports.getCandiName(fn, ln, "Councilor", function(dataa){
                    //dataa.id
                    module.exports.insertVotes(prid, ref, c, dataa.id, function(res){
                    });
                });
                break;
        }

    }
}

我的功能正常,但是当我检查数据库时,VoteCount部分中的数据错误。

预期的

e ejercito 4
j ejercito 5

但是在数据库中是

结果

e ejercito 5
j ejercito 5

如果我的查询尚未完成,如何停止我的for循环?

奥康尼

无需停止循环,JS具有异步特性。

事情是,在module.exports.insertVotes(prid, ref, c, dataa.id, function(res){});执行时间之前,for循环已经完成,因此对于所有情况您最终都会得到las index。

要解决此问题,可以使用forEach loop每次迭代都有其自己的范围。

    checkPositionCandidateInsertVote: function(ref, prid, json, callback){

    json.data.forEach(function(listItem, i){

        var fn = (json.data[i].cfname).toLowerCase();
        var ln = (json.data[i].clname).toLowerCase();
        var c = json.data[i].cvcount;
        console.log(fn, ' ', c);
        switch((json.data[i].cpos).toLowerCase()){
            case "g":
                module.exports.getCandiName(fn, ln, "Governor", function(dataa){
                    //dataa.id
                    module.exports.insertVotes(prid, ref, c, dataa.id, function(res){
                    });
                });
                break;
            ...
            ...
            ...

            case "c":
                module.exports.getCandiName(fn, ln, "Councilor", function(dataa){
                    //dataa.id
                    module.exports.insertVotes(prid, ref, c, dataa.id, function(res){
                    });
                });
                break;
        }

    });


}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Node.js中处理异步数据库

来自分类Dev

Node.JS和同步数据库查询

来自分类Dev

在node.js中使用promise链接数据库查询

来自分类Dev

在Cloudant(使用node.js模块)数据库中查询文档列表?

来自分类Dev

在node.js中使用promise链接数据库查询

来自分类Dev

使用http查询字符串作为数据库对象node.js / express

来自分类Dev

节点JS异步数据库调用

来自分类Dev

Node.js和Mongoose:使用for循环检查数据是否存在以及是否插入数据库

来自分类Dev

Node.js:在异步保存到数据库的同时接收链式数据

来自分类Dev

使用node.js和angular更新数据库

来自分类Dev

使用mongodb创建数据库node.js

来自分类Dev

Node.js使用mssql访问数据库

来自分类Dev

使用Node.js读取SQLite数据库

来自分类Dev

使用node.js设置MongoDB数据库连接

来自分类Dev

如何在Node.js中使用数据库?

来自分类Dev

使用node.js和angular更新数据库

来自分类Dev

使用导出与动态数据库 node.js 连接

来自分类Dev

Node.js和MongoDB-多个异步数据库操作的原子性吗?

来自分类Dev

Node.js和MongoDB-多个异步数据库操作的原子性?

来自分类Dev

node.js&在异步数据库搜索后表达,重定向或发送文件

来自分类Dev

为什么我显然使用node.js连接到SQL Azure数据库,但未执行查询?

来自分类Dev

在Node.js中使用异步等待功能与猫鼬查询

来自分类Dev

循环中的JS异步功能

来自分类Dev

在node.js中循环SQL数据库时如何正确创建嵌套的json数组?

来自分类Dev

在不使用异步库帮助器类的情况下在node.js中异步进行for循环

来自分类Dev

如何从包含数据库查询的Node.js函数返回值

来自分类Dev

具有API和数据库查询的Node.js Promise Chain

来自分类Dev

如何在Node.JS中执行多个查询(构建数据库)?

来自分类Dev

Node.js SQL如何运行跨越两个数据库的查询

Related 相关文章

  1. 1

    在Node.js中处理异步数据库

  2. 2

    Node.JS和同步数据库查询

  3. 3

    在node.js中使用promise链接数据库查询

  4. 4

    在Cloudant(使用node.js模块)数据库中查询文档列表?

  5. 5

    在node.js中使用promise链接数据库查询

  6. 6

    使用http查询字符串作为数据库对象node.js / express

  7. 7

    节点JS异步数据库调用

  8. 8

    Node.js和Mongoose:使用for循环检查数据是否存在以及是否插入数据库

  9. 9

    Node.js:在异步保存到数据库的同时接收链式数据

  10. 10

    使用node.js和angular更新数据库

  11. 11

    使用mongodb创建数据库node.js

  12. 12

    Node.js使用mssql访问数据库

  13. 13

    使用Node.js读取SQLite数据库

  14. 14

    使用node.js设置MongoDB数据库连接

  15. 15

    如何在Node.js中使用数据库?

  16. 16

    使用node.js和angular更新数据库

  17. 17

    使用导出与动态数据库 node.js 连接

  18. 18

    Node.js和MongoDB-多个异步数据库操作的原子性吗?

  19. 19

    Node.js和MongoDB-多个异步数据库操作的原子性?

  20. 20

    node.js&在异步数据库搜索后表达,重定向或发送文件

  21. 21

    为什么我显然使用node.js连接到SQL Azure数据库,但未执行查询?

  22. 22

    在Node.js中使用异步等待功能与猫鼬查询

  23. 23

    循环中的JS异步功能

  24. 24

    在node.js中循环SQL数据库时如何正确创建嵌套的json数组?

  25. 25

    在不使用异步库帮助器类的情况下在node.js中异步进行for循环

  26. 26

    如何从包含数据库查询的Node.js函数返回值

  27. 27

    具有API和数据库查询的Node.js Promise Chain

  28. 28

    如何在Node.JS中执行多个查询(构建数据库)?

  29. 29

    Node.js SQL如何运行跨越两个数据库的查询

热门标签

归档