Это мой код:
var thisValue = new models.Value({
id:id,
title:title //this is a unique value
});
console.log(thisValue);
thisValue.save(function(err, product, numberAffected) {
if (err) {
if (err.code === 11000) { //error for dupes
console.error('Duplicate blocked!');
models.Value.find({title:title}, function(err, docs)
{
callback(docs) //this is ugly
});
}
return;
}
console.log('Value saved:', product);
if (callback) {
callback(product);
}
});
Если я обнаруживаю, что дубликат пытается встать, я блокирую его. Однако, когда это произойдет, я хочу вернуть существующий документ. Как вы видите, я реализовал цепочку обратных вызовов, но это уродливо и непредсказуемо (то есть, как я узнаю, какой вызов будет вызван? Как я могу перейти вправо?). кто-нибудь знает, как решить эту проблему? Любая помощь была оценена.