NodeJS + Express, MongoDB + Mongoose
У меня есть фид JSON, где у каждой записи есть набор атрибутов "место встречи" (такие вещи, как "название места", "место встречи", "телефон места встречи" и т. Д.).Я хочу создать коллекцию всех мест в фиде - один экземпляр каждого места, без дупликов.
Я перебираю JSON и проверяю, существует ли место в моей коллекции мест.Если это не так, сохраните его.
jsonObj.events.forEach(function(element, index, array){
Venue.findOne({'name': element.vname}, function(err,doc){
if(doc == null){
var instance = new Venue();
instance.name = element.vname;
instance.location = element.location;
instance.phone = element.vphone;
instance.save();
}
}
}
Желаемый: список всех мест (без дупликов).
Результат: Множество дупов в коллекции мест.
По сути, цикл создал новую запись Venue для каждой записи в фиде JSON.
Я изучаю Node и его асинхронные качества, поэтому я считаю, что цикл for завершается еще до первогоФункция save () завершается, поэтому оператор if всегда проверяет пустую коллекцию.Console.logging поддерживает это утверждение.
Я не уверен, как переработать это так, чтобы оно выполняло желаемую задачу.Я попробовал асинхронный модуль Колана, но не могу помочь.Есть хороший шанс, что я использую неправильно.
Большое спасибо за то, что указали мне правильное направление - я искал безрезультатно.Если асинхронный модуль является правильным ответом, я буду признателен за помощь в его реализации в этом конкретном случае.
Еще раз спасибо!