Я только начал играть с node.js, имел некоторый опыт работы с JavaScript, но очень мало на стороне сервера.
У меня есть приведенный ниже код, и нужная мне функциональность слишком сложнапродукт в коллекцию, используя Mongoose, однако, если дубликат найден с использованием «имени», то отправьте продукт в виде внедренного документа в дубликат, используя только выбранную информацию, такую как product_ids, информация о пакете и т. д. Я предполагаю,проблема в том, что findOne не находит дубликаты при первом запуске.Если я запускаю его второй раз, он обнаруживает дубликаты, но к тому времени уже слишком поздно.Я не уверен, как заставить findOne работать только после того, как произошло предыдущее сохранение.
function insertProduct(data) {
var product;
Product.findOne({
name: data.name
}, function(err, doc) {
if (err) throw err;
if (!doc) {
product = new Product({
name: data.name
//other product data
});
product.packages.push({
//package data
});
}
else if (doc) {
doc.packages.push({
//package data
});
product = doc;
}
product.save(function(err) {
if (err) throw err;
console.log('Added: ' + product.name);
});
});
}
request(url, function(error, response, body) {
if (!error && response.statusCode === 200) {
jsonResult = JSON.parse(body);
jsonResult.result.forEach(insertProduct);
}
});
Я понимаю, что это должно быть проблемой с потоком управления, что я все еще пытаюсь получитьдержатьВаша помощь приветствуется!