ngOnInit не выполняет код внутри подписки на услугу

#javascript #node.js #angular #mean-stack

Вопрос:

это мой NgOnInit метод. В консоли выполняется только «привет, прежде чем». Я пробовал это делать .subscribe( () => console.log("hello after")) , но внутри этого ничего не работает.

     ngOnInit(): void {
    console.log("hello before")
    this.checkoutService.getTemplates().subscribe(({ templates }) => {
      console.log("hello after")
      this.templates = templates;
      console.log(templates)
    })
  }
 

Выездной сервис:

      getTemplates(): Observable<{templates: Template[]}> {
        return this.http.get<{templates: Template[] }>("http://localhost:3000/checkout")
      }
 

/Обработчик Конечной точки проверки:

     router.get("", (req, res, next) => {
        var templates = [];
        var realTemps = [];
        const token = req.headers.authorization.split(" ");
        const decoded = jwt.verify(token[1], 'secretkey');
        decodedFactoryId = decoded.factoryId
    
        Template.findAllByFactoryId(decodedFactoryId)
            .then((results) => {
                for (var i = 0; i < results.length; i  ) {
                    // THIS IS AN AVOIDABLE LOOP, quadratic time must be prevented by correctly formatting the data (TODO)
                    for (var j = 0; j < results.length; j  ) {
                        if (results[i][j].id) {
                            templates.push(results[i][j].id)
                        }
                    }
                }
            }).then(() => {
                // Promise.all
                return Promise.all(templates.map(template => Template.findByTemplateId(template).then(result => {
                    console.log("here is the result: "   JSON.stringify(result[0]))
                    realTemps.push(result);
                })));
                
            })
            .then(() => {
                return realTemps;
            })
            
    })
 

Было отправлено 2 запроса на http://localhost:3000/checkout. Один из них ответил 200, другой ничего не вернул.

Вот моя вкладка «Сеть»:

успешный ответ

нет возврата?

Как я могу заставить код внутри моего checkoutservice NgOnInit метода фактически выполняться?

Комментарии:

1. Можете ли вы опубликовать скриншот консоли вашего браузера, чтобы лучше понять проблему. Спасибо 🙂

2. Вы уверены, что http-вызов выполнен правильно и возвращает правильный ответ 2XX?

3. Я думаю, что обработчик вашей службы не выполняется должным образом — по причинам. Проверьте вкладку «Сеть», чтобы сначала узнать, есть ли какой-либо ответ, а затем мы продолжим расследование. 🙂

4. Для того subscribe , чтобы работать, ваш http ответ должен быть observable . Я не вижу никакого наблюдаемого возврата в предоставленном вами коде.

5. Я добавил изображения в сообщение на вкладке «Сеть». Спасибо вам за вашу помощь. @Фейсал Я думал, что оператор return для метода http был наблюдаемым? Где мне нужно было бы это сделать