#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 был наблюдаемым? Где мне нужно было бы это сделать