Свойство 'send' не существует для типа 'CallableContext' - PullRequest
0 голосов
/ 02 мая 2020

Если я пытаюсь сделать свой код с помощью onRequest , это является проблемой, которую я получаю, и, поскольку кто-то предложил мне попробовать onCall, я получаю эту ошибку

Свойство 'send' не существует в типе 'CallableContext'.

Это код, который я использую

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

const express = require('express');
const cors = require('cors');
const docs = express();
docs.use(cors({ origin: true }));


admin.initializeApp()

export const getFeed = functions.https.onCall(async(req, res)=>{
    docs.get = await admin.firestore().collection('posts').limit(10).get()
    res.send(docs.docs.map((doc: { data: any; })=> doc.data))

}) 

Любая подробная помощь, пожалуйста, потому что я новичок в ioni c и angular и firebase

1 Ответ

1 голос
/ 02 мая 2020

Функции onCall работают очень по-разному в функциях onRequest. Прочтите документацию , чтобы понять, как их написать.

Вызываемые функции не используют объекты запроса и ответа. Они принимают два аргумента, аргумент входных данных и контекст:

export const getFeed = functions.https.onCall(async (data, context) => { ... })

Чтобы отправить ответ, вы должны вернуть обещание, которое разрешается с помощью объекта для сериализации и отправки обратно клиенту.

const querySnapshot = await admin.firestore().collection('posts').limit(10).get()
return querySnapshot.docs.map(snap => snap.data())

Они также обрабатывают Cors самостоятельно - для этого не нужно добавлять промежуточное программное обеспечение. Фактически, вы не можете использовать промежуточное программное обеспечение express с вызываемыми функциями. Вам также нужно будет вызвать их, используя предоставленный клиентский SDK. Они не будут работать с обычным HTTP-запросом. Документация объяснит это.

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