【发布时间】:2018-02-20 18:17:30
【问题描述】:
我在 Firebase Admin SDK (NodeJS) 的无服务器项目中使用 admin.auth().getUser(uid),它确实成功返回了结果。但是即使我的函数返回了结果,我的 lambda 仍然没有终止,我必须使用 CTRL+C 来结束它。
这是我的函数的完整代码(在 TypeScript 中):
public getUser(uid: string): any {
console.log('FirebaseManager getUser method start');
const self: FirebaseManager = this;
const promise: any = self.getDeferred();
admin.auth().getUser(uid)
.then(function(userRecord: admin.auth.UserRecord) {
console.log("Successfully fetched user data:", userRecord);
promise.resolve(userRecord);
})
.catch(function(error: FirebaseError) {
console.log("Error fetching user data:", error.errorInfo);
promise.reject('Error getting Firebase user ' + uid);
});
return promise.promise;
}
是不是我做错了什么?
请注意,如果我注释掉 admin.auth().getUser(uid) 块(并将其替换为 promise.resolve("ok")),我的函数会正确终止。我的意思是,这不会挂起(但它有点没用^^):
public getUser(uid: string): any {
console.log('FirebaseManager getUser method start');
const self: FirebaseManager = this;
const promise: any = self.getDeferred();
promise.resolve("ok");
return promise.promise;
}
我正在使用 Serverless 1.21.1、Typescript 2.5.2、Node 6.11.3 或 8.4.0(2 个不同的开发环境,结果相同)
【问题讨论】:
标签: node.js serverless-framework firebase-admin