Я использую NodeJS и Mongoose для приложения, в котором есть пользователи. И у меня есть большое количество действий, которые сервер делает для определенного пользователя, в зависимости от запроса.Как уменьшить это дублирование кода в NodeJS/Mongoose
Это означает, что у меня есть этот конкретный фрагмент кода, появляющийся в большом количестве функций:
User.findOne({'email':req.user.email}, function (err, user) {
if (err) {
console.log('err');
res.send('Error');
}
if(!user){
console.log('err');
res.send('Error');
}
// do something with returned user
user.data = ....
...
user.save(function(err) {
if(err) {
console.log('err');
res.send('Error');
}
else {
console.log('success');
res.send('Success');
}
}
Как вы можете видеть, есть много кода, который размножается. Измененный код - это часть «сделать что-то с возвращенным пользователем». Почти все остальное (сообщения об ошибках и т. Д.) Остаются такими же.
Итак, как я могу извлечь эту часть? Поскольку это работает на механизм обратного вызова, есть ли определенный способ достичь этого?
Используйте ['.update()'] (http://mongoosejs.com/docs/api.html#model_Model.update) вместо этого для стартеров. Используя '.findOne()', тогда манипулирование и вызов '.save()' довольно плохой практики, которая является полосой пропускания, делая вещи медленными и обычно полными дыр, что приводит к проблемам параллелизма с обновлениями. Это более широкая проблема, но только разработка того, как правильно применять этот вызов, сэкономит много шаблонов, а также даст вам много других преимуществ. –