关于nodejs和mysql查询刚刚插入数据库的数据查询不到的问题
发布于 9 年前 作者 arden 3979 次浏览 最后一次编辑是 8 年前 来自 问答

今天我用nodejs做一个简单的爬取网页内容,解析,图片下载保存本地,入库的小程序,可是在数据库操作这一块碰到一个问题。程序是循环指定次数爬取一个网页,然后把内容放库,在入库的同时我要判断正在入库的内容是否已经存在,可是这个时候我要进行数据库查询,但怎么查询都查询不到前面循环已经入好库的内容。哪位有这方面的经验。 <pre><code> 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); } }) }); } }); } </code></pre> 上面是一段简单的代码,其实很简单,首先是查询数据库,看指定记录是否已经存在,不存在则无进行插入,存在则不入库。

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方法,你的这个应该和这个类似

回到顶部