У меня довольно простая ситуация.Я выполняю вызов конечной точки в моих облачных функциях Google, она отправляет простой ответ.Я пытаюсь console.log.
Угловой компонент
async submitHandler(formDirective: FormGroupDirective) {
this.loading = true;
const formValue = JSON.stringify(this.reqForm.value);
this.http.post('https://myApp.cloudfunctions.net/myEndpoint', formValue)
.subscribe(res => {
console.log(res);
this.success = true;
formDirective.resetForm();
},
(err) => { console.log(err) });
this.loading = false;
}
Функция Google Cloud
const functions = require('firebase-functions');
const cors = require('cors')({ origin: true });
const admin = require('firebase-admin');
admin.initializeApp();
exports.myEndpoint = functions.https.onRequest((req, res) => {
return cors(req, res, () => {
const body = JSON.parse(req.body);
const name = body.name;
console.log("REQUEST BODY >>> ", body);
console.log("REQUEST NAME >>> ", name);
if (!name) {
res.status(400).send('missing name!')
}
res.send(name.split('').reverse().join(''))
});
});
Функция облака отвечает name
поле поменяно.Итак, "name": "Kenny"
ответит "ynneK"
.Это то, что я должен видеть в моем интерфейсе, когда я console.log(res)
.
Вот мой интерфейс ошибка :
HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "https://myApp.cloudfunctions.net/myEndpoint", ok: false, …}
error: {error: SyntaxError: Unexpected token l in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttp…, text: "llaH ynneK"}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
message: "Http failure during parsing for https://myApp.cloudfunctions.net/myEndpoint"
name: "HttpErrorResponse"
ok: false
status: 200
statusText: "OK"
url: "https://myApp.cloudfunctions.net/myEndpoint"
__proto__: HttpResponseBase
Как вы можете видеть во второй строке "ошибка: {.." Iесть text: "llaH ynneK"}
.Итак, я не думаю, что это проблема с сервером, я думаю, что это локальная проблема Angular.
Что я делаю не так?Должен ли я установить заголовки ответа для application / json в конечной точке облачной функции?Я не уверен, что я делаю не так здесь.
Поток:
JSON.stringify
формирует данные и отправляет их по почте (кажется, это единственный способ, которым это будет работать)
Конечная точка GCF получает его и JSON.parse(req.body)
Конечная точка делает свое дело, а затем отправляет обратно клиенту res.send()
Клиент получает ответ, чтобы убедиться, что все в порядке, но ошибка возникает при попытке прочитать его.
Спасибо за любую помощь.