根據以前的問題Illegal break statement (Node.js)的建議,我實現了async.whilst()
,但它不會迭代多次。Node.js - 異步雖然循環不迭代
我想通過在ID末尾增加一個數字來查找唯一ID,然後查詢Mongo以查看該ID是否存在。如果不存在,則找到唯一ID。它只循環一次,而不是直到找到唯一。哪裏不對?
代碼:
var uniqueNumber = 1;
var newUnique;
async.whilst(
function() {
var uniqueNum_string = uniqueNumber.toString();
newUnique = data.id + uniqueNum_string;
db.collection('landmarks').findOne({'id':newUnique}, function(err, data){
if (data){
console.log('entry found!');
return;
}
else {
console.log('entry not found!');
}
});
},
function (callback) {
uniqueNumber++;
},
function (err) {
saveLandmark(newUnique);
}
);
我相信你必須在「entry not found」else語句中返回true才能再次循環。 –
因爲測試函數應該是同步的,所以你不能真正使用。你也必須在迭代器中調用回調。 –
好點@AndreasHultgren。我完全忽略了這一點。 –