【发布时间】:2020-06-21 12:29:03
【问题描述】:
我正在为一个类项目开发一个小型应用程序,我必须在其中从 firebase 获取一些用户数据。为此,我选择使用云功能来检索所有用户。这是我的函数的代码。
import { Request, Response } from 'express';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
import * as cors from 'cors';
const corsHandler = cors({origin: true});
admin.initializeApp();
const getAllUsers = (req: Request, res: Response) => {
corsHandler(req, res, () => {
const maxResults = 1000; // optional arg.
const allUsers: any = {'email': [], 'uid': []};
admin.auth().listUsers(maxResults).then(
(userRecords: { users: any[]; }) => {
userRecords.users.forEach(userRecord => {
// For each user
allUsers['email'].push(userRecord.email);
allUsers['uid'].push(userRecord.uid);
});
return res.status(200).send(JSON.stringify(allUsers));
}).catch((error: any) => {
console.log("Error listing users:", error);
return res.status(500).send(error);
});
})
}
module.exports = {
api: functions.https.onRequest(getAllUsers),
};
问题出在角度方面,我试图得到这个函数的结果,如果我使用 curl,没问题我得到了我需要的所有信息。但是当我使用角度服务时,它陷入了无限循环。这是我的代码:
<p> {{ this.authService.getAllUsers() | async }} </p>
在我的 html 文件中,我只想在我的服务中打印结果:
import { functions, auth } from 'firebase';
getAllUsers(): Promise<any> {
//return this.http.get('https://XXX.cloudfunctions.net/api').toPromise();
return functions().httpsCallable('getAllUsers')();
}
正如你所看到的,我应该从这两个结果中得到一个承诺,所以我不知道无限循环可能来自哪里。 在控制台中我没有看到任何错误...
感谢您的帮助!
【问题讨论】:
标签: angular firebase ionic-framework google-cloud-functions