Я использую admin.auth().getUser(uid) в Firebase Admin SDK (NodeJS) в бессерверном проекте, и он успешно возвращает результат. Но даже несмотря на то, что моя функция возвращает результат, моя лямбда по-прежнему не завершается, и мне приходится использовать 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 (две разные среды разработки, обе с одинаковым результатом)