Правильная обработка ошибок выборки для Mongoose?

Это чисто вопрос о передовой практике. Я новичок в Node и Mongoose. Мне очень нравится эта технология, и я работаю над проектом по созданию API на основе JSON -для приложения, которое я создаю.

Я обнаружил, что постоянно повторяю код, когда извлекаю объекты из своей базы данных. Например:

Playlist.findById(req.params.id, function(err,playlist){
  if (err)
    return res.json({error: "Error fetching playlist"});
  else if (!playlist)
    return res.json({error: "Error finding the playlist"});

  //Actual code being performed on the playlist that I'm fetching
});

Обработка ошибок в начале вызова функции раздражает, потому что мне приходится повторять этот код для каждого обращения к базе данных... или я так думаю.

Я думал об использовании обратного вызова, подобного:

var fetchCallback = function(err,objOrDoc,callback){
  //Handle the error messages
  callback(objOrDoc);
};

Однако такой подход испортил бы мой последовательный поток, поскольку мне пришлось бы определять функцию обратного вызова до выполнения выборки. Таким образом, если бы у меня было много запросов к базе данных, связанных вместе, мне пришлось бы размещать обратные вызовы в обратном порядке, что далеко не идеально с точки зрения чистого -кодирования.

Мне интересно, сталкивался ли кто-нибудь с этой проблемой и есть ли какие-либо рекомендации по сокращению повторений.

Я также использую экспресс-фреймворк, поэтому, если есть полезный способ справиться с этим в экспрессе, мне тоже было бы интересно узнать.

7
задан Michael D. 6 May 2012 в 16:26
поделиться