0
我有一個JS函數,它將一個UserArticle添加到數據庫(使用mongoose和NodeJS)。問題是它沒有達到目的。未達到函數的末尾
我的意思是,我試圖確定在哪個地方大部分時間到達並且在Provider.findOne
之前,或在User.find
之前。
var insertUserArticleToAllSubscribers = function (base_ua, providerId) {
var Provider = mongoose.model('Provider');
var User = mongoose.model('User');
var UserArticle = mongoose.model('UserArticle');
Provider.findOne({"twitter_id": providerId}, function (err, provider) {
if (err) {
console.log(err);
return;
}
if (provider) {
User.find({"subscribed": provider._id}, function (err, users) {
if (err) {
console.log (err);
return;
}
if (users) {
for (i in users) {
var ua = new UserArticle ({"user": users[i], "article":base_ua.article, "place":base_ua.place, "read":0, "starred":0});
ua.save(function (err) {
if (err) console.log(err);
logAddedArticle(ua._id, users[i]);
console.log("ArticleAdded!: " + ua._id);
});
}
} else {
console.log("No users");
}
})
}
})
}
我不明白爲什麼它沒有拋出任何錯誤到達函數的末尾。這段代碼中有錯誤嗎?
那麼,事實上,它有時會達到功能的結束,但幾乎總是沒有。
謝謝
究竟你的意思:
現在你有這樣的邏輯結構:
,如果你將它更改爲這一點,你可能會得到一個結果功能? findOne和find中的函數是異步的,所以它們在insertUserArticleToAllSubscribers返回之後纔會運行。 – loganfsmyth 2011-12-23 14:51:08