【发布时间】:2020-03-21 23:44:09
【问题描述】:
我在使用 Typescript 类方法 (Angular) 时遇到问题,我试图从 Firestore 查询返回结果(始终是单个数字),因此我可以从另一种方法中获取它并添加到 Firestore。我应该说我对 Typescript、Firestore 查询和 Promises 还很陌生。在 Typescript 中,我还没有找到关于 从 Firestore 查询 中返回 的具体问题。
我知道我的 return 语句是在检索数据之前执行的,但是我怎样才能返回结果,以便我可以通过另一种方法访问它并再次添加到 Firestore?我在调用方法startSessionPhase1 中的方法时遇到错误,因为我想检索一个数字,但方法getLastSession 正在返回一个承诺。
类型 'Promise' 不可分配给类型 'number'。
我的班级:
export class FirebaseService {
moduleCollection: AngularFirestoreCollection<Module> = null;
constructor(public afs: AngularFirestore) {
this.moduleCollection = afs.collection('Modules');
}
getLastSessionP1() {
var query = this.afs.collection("SessionsPhase1").ref.orderBy('session', "desc").limit(1);
return query.get()
.then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
doc.data().session;
});
})
.catch((err) => {
console.log(err.message);
});
}
startSessionPhase1(value) {
var lastSessionP1: number = this.getLastSessionP1();
console.log('lastSessionP1: ',lastSessionP1);
return this.afs.collection('SessionsPhase1').add({
variable: var, //etc
session: lastSessionP1,
});
})();
}
【问题讨论】:
-
你能把全班发完吗?
-
还有什么你回来了?
标签: typescript promise google-cloud-firestore