как разрешить неперехваченную ошибку firebase с помощью ioni c typescript? - PullRequest
1 голос
/ 04 августа 2020

У меня проблема с кодом. Я использую функции Firebase в проекте ioni c (с машинописным текстом). когда я запускаю "firebase serve", моя функция работает, и я могу получить данные, но когда я экспортирую свою функцию в ioni c, у меня появляется эта ошибка:

Непойманная ошибка: ответ отсутствует поле данных. в новом HttpsErrorImpl (index. cjs. js: 58) в Service. (индекс. cjs. js: 553) на шаге (tslib.es6. js: 100) на Object.next (tslib.es6. js: 81) при выполнении (tslib.es6 . js: 71) в ZoneDelegate.invoke (зона-evergreen. js: 359) в Object.onInvoke (core. js: 39699) в ZoneDelegate.invoke (зона-evergreen. js: 358) в Zone.run (зона-evergreen. js: 124) в зоне-evergreen. js: 855

это моя функция firebase:

import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'

const serviceAccount = require('../permissions.json')
const cors = require('cors')({ origin: true })

    

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: 'https://{'myUrl'}.firebaseio.com'
})

export const posts = functions.https.onRequest(async (request, response) => {
    const docs = await admin.firestore().collection('posts').orderBy('date', 'desc').get()
    cors(request, response, () => {})
    response.json(
        docs.docs.map((doc) => {
            return {
                postID: doc.id,
                ...doc.data()
            }
        })
    )
})

и это мой ioni c код:

import { Component, OnInit } from '@angular/core';
import { AngularFireFunctions } from '@angular/fire/functions'


 export class SharedModule {}

 @Component({
   selector: 'app-feed',
   templateUrl: './feed.page.html',
   styleUrls: ['./feed.page.scss'],
  })
  export class FeedPage implements OnInit {
 
  posts
  sub
 
   constructor(private aff:AngularFireFunctions) {
 }
  
    ngOnDestroy() {
       this.sub.unsubscribe()
   }

 

    

ngOnInit() {     

   const posts = this.aff.httpsCallable('posts')
    this.sub = posts({}).subscribe(data =>{
    this.posts = data
  } )
     
   } 
}

если кто-то не знает, почему он не работает, пожалуйста, поднимите sh этот вопрос вверх с помощью кнопки вверх, возможно, другой человек знает, что это очень важно, потому что мне действительно нужно быстро исправить эту ошибку

заранее спасибо

1 Ответ

0 голосов
/ 04 августа 2020

Вы вызываете вызываемую функцию :

const posts = this.aff.httpsCallable('posts')

Но ваша функция не относится к типу callalbe. Это HTTP-функция , как вы можете видеть из onRequest в построителе функций:

export const posts = functions.https.onRequest(async (request, response) => {

Если вы хотите написать вызываемую функцию, используйте примеры в связанной документации. Вы будете использовать onCall вместо onRequest. Обратите внимание, что у них очень разные API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...