У меня есть функция JS, которая добавляет пользовательскую статью в БД (используя 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