今天我用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);
}
})
});
}
});
}
上面是一段简单的代码,其实很简单,首先是查询数据库,看指定记录是否已经存在,不存在则无进行插入,存在则不入库。