Как правильно обрабатывать ошибки в Express?

Вы можете переписать свой код с помощью mutate_at, чтобы преобразование можно было сделать за один раз, как:

library(dplyr)
library(zoo)


df %>% 
  group_by(iso) %>%
  mutate_at(vars(starts_with("var")), 
            funs(na.locf(na.locf(na.approx(., na.rm = FALSE, rule = 1),na.rm=FALSE),
                                                              fromLast=TRUE)))


# # A tibble: 6 x 5
# # Groups: iso [2]
# iso    year  var1   var2  var3
# <chr> <int> <dbl>  <dbl> <dbl>
# 1 XXX    2005   165  29.0   2151
# 2 XXX    2006   160  21.0   2139
# 3 XXX    2007   172  15.0   2890
# 4 XXX    2008   184   9.00  3640
# 5 XXX    2009   184   9.00  3640
# 6 YYY    2005   206 461     8049
# 

Данные:

df <- read.table(text=
"iso year var1 var2 var3
1 XXX 2005  165   29 2151
2 XXX 2006  160   21 2139
3 XXX 2007   NA   NA   NA
4 XXX 2008  184    9 3640
5 XXX 2009   NA   NA   NA
6 YYY 2005  206  461 8049",
header = TRUE, stringsAsFactors = FALSE)
24
задан nbro 14 November 2015 в 16:08
поделиться

2 ответа

Вы хотите проверить Экспресс-обработка ошибок . Оттуда:

app.param('userId', function(req, res, next, id) {
    User.get(id, function(err, user) {
        if (err) return next(err);
        if (!user) return next(new Error('failed to find user'));
        req.user = user;
        next();
    });
});

Сладость, которую вам не хватает, это return next(...)

35
ответ дан nbro 14 November 2015 в 16:08
поделиться

У вас есть пара проблем в вашем коде:

  • При ответе клиенту необходимо использовать объект ответа (res, а не req).

  • При отправке ошибки в next, вы должны вернуть , поэтому остальная часть функции не запускается.

Вот ваш код после исправления этих ошибок:

app.get('/event/:id', function(req, res, next) {
    if (req.params.id != 1) {
        return next(new Error('cannot find event ' + req.params.id));
    }

    res.send('event found!'); // use res.send (NOT req.send)
}); 
10
ответ дан nbro 14 November 2015 в 16:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: