В моем приложении node.js маршрут выполняется по запросу Ajax и он всегда получает параллельные запросы.Node.js: Mongodb - параллельные запросы
Мое требование состоит в том, чтобы проверить аналогичный документ и, если существует, обновить данные до существующего документа. Если ни один подобный документ не создаст новую запись.
См. Приведенный ниже код. Проблема в том, что в большинстве случаев «findExistingDoc» возвращает false, но к моменту, когда вызов пытается создать новый документ, аналогичный документ уже создан предыдущим вызовом.
Пожалуйста, помогите с оптимальным решением для решения этой проблемы.
self.findExistingDoc(function(err, doc){ // Check if a similar doc already exist
if (!doc){
console.log ("NO existing doc");
self.save(function(err, doc) {
if (err) {
console.error ("DB Error while creating new doc : " + JSON.stringify(err));
} else {
console.log ("New document created");
}
});
} else {
console.log ("existing doc");
var qry = {"name": req.s_name, "class": req.s_class};
self.model("Collection").findOneAndUpdate (qry, {$addToSet: {"data": req.body.s_data}}, {safe: true, upsert: true}, function (err, album) {
if (err) {
console.error ("DB Error while adding data to existing doc : " + JSON.stringify(err));
} else {
console.log ("Data added to existing doc");
}
callback(err, output);
});
}
});
Что такое строение док и ваш s_data от тела –
{ s_name: "Джон", s_class: "Pre-Univ", данных: [{d1: "XYZ"}, {d1 : "ABC"}] } – Ananth