我的代码有问题。我正在一个离子项目中使用Firebase函数(带有typescript(。当我跑步时;firebase服务";,我的函数有效,我可以获得数据,但当我在ionic中导出函数时,我会出现以下错误:
未捕获错误:响应缺少数据字段。在新的HttpsErrorImpl(index.cjs.js:58(。(索引.cjs.js:553((tslib.es6.js:100(在Object.next(tslib.es6.js:81(中(tslib.es6.js:71(在ZoneDelegate.invoke(常青树区js:359(ZoneDelegate.invoke上的Object.onVoke(core.js:39699(在zone.run(zone.green.js:124(区域常青.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()
}
})
)
})
这是我的离子密码:
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
} )
}
}
如果有人不知道为什么它不起作用,请用向上按钮把这个问题推到顶部,也许其他人知道它非常重要,因为我真的需要快速修复这个错误
提前感谢
您正在调用一个可调用函数:
const posts = this.aff.httpsCallable('posts')
但是你的函数不是callalbe类型的。这是一个HTTP函数,您可以从函数生成器中的onRequest
中看到:
export const posts = functions.https.onRequest(async (request, response) => {
如果您想编写一个可调用函数,请使用链接文档中的示例。您将使用onCall
而不是onRequest
。请注意,它们有非常不同的API。