关于nodejs和mysql查询刚刚插入数据库的数据查询不到的问题
发布于 13小时前 作者 arden 65 次浏览 来自 问答

今天我用nodejs做一个简单的爬取网页内容,解析,图片下载保存本地,入库的小程序,可是在数据库操作这一块碰到一个问题。程序是循环指定次数爬取一个网页,然后把内容放库,在入库的同时我要判断正在入库的内容是否已经存在,可是这个时候我要进行数据库查询,但怎么查询都查询不到前面循环已经入好库的内容。哪位有这方面的经验。


function main() {
    var promise = getOrm();
    promise
        .then(function (orm) {
            for (var i = startId; i <= endId; i++) {
                start(i, function(json) {
                    var lastIndex = json.analysis.indexOf("。");
                    var correctAnswer = json.analysis.substring(lastIndex - 1, lastIndex);
                    orm.collections.puzzlecategory.findOneByName(json.type).exec(function (err, puzzleCategoryModel) {
                        if (!puzzleCategoryModel) {
                            var tempPuzzleCategory = {};
                            tempPuzzleCategory.name = json.type;
                            tempPuzzleCategory.status = 1;
                            orm.collections.puzzlecategory.create(tempPuzzleCategory).exec(function (err, tempPuzzleCategoryModel) {
                                console.log(err);
                                savePuzzle(tempPuzzleCategoryModel.id, correctAnswer, json, orm);
                            })
                        } else {
                            savePuzzle(puzzleCategoryModel.id, correctAnswer, json, orm);
                        }
                    })
                });
            }
        });
}
上面是一段简单的代码,其实很简单,首先是查询数据库,看指定记录是否已经存在,不存在则无进行插入,存在则不入库。
1 回复

里面也是异步的啊

        var files = [];
        for (var i = 0; i < 100; ++i) {
          files.push(Top.createAsync({"username":"fixture-user-" + i,"address":"password" + i}));
        }
        Promise.all(files).then(function() {
          done();
        });

这是bluebird写的一段代码,创建100条记录,成功后调用done方法,你的这个应该和这个类似

回到顶部