angular - Angularfire2 - 不保存结果数据
问题描述
我认为这是因为我实际上并不知道如何正确地做我想做的事。基本上我正在保存用户和学校(也是用户)之间的关联,并且在新文档中想要从学校用户那里提取一些图像网址。我的查询都返回未定义的......
基本上,然后我想将这些图像 url 保存在我将使用的另一个文档中。
结果打印到控制台很好....
private addUserSchool(userId: string, school: any) {
const concatId = this.concatIds(userId, school.uid);
const userSchoolsRef: AngularFirestoreDocument<any> = this.afs.doc(`userSchools/${concatId}`);
const schoolRef: AngularFirestoreDocument<any> = this.afs.doc(`users/${school.uid}`);
let schoolImageURL;
let schoolImageLogoURL;
if(school.active) {
schoolRef.valueChanges().subscribe(result => {
console.log(result)
return schoolImageURL = result.schoolImageURL;
});
}
schoolRef.valueChanges().subscribe(result => {
console.log(result)
return schoolImageLogoURL = result.schoolImageLogoURL;
})
// create model from this.
const data = {
userId: userId,
schoolId: school.uid,
active: school.active ? school.active : false,
activeSchoolImageURL: schoolImageURL ? schoolImageURL : null,
activeSchoolLogoURL: schoolImageLogoURL ? schoolImageLogoURL : null
}
return userSchoolsRef.set(data, { merge: true })
}
解决方案
如评论中所述,当您拨打电话时,这些值尚不可用set
。
set
当第一次调用的值可用时,您可以使用另一个 rxjs 运算符执行:
private addUserSchool(userId: string, school: any): any {
const concatId = this.concatIds(userId, school.uid);
const userSchoolsRef: AngularFirestoreDocument<any> = this.afs.doc(`userSchools/${concatId}`);
const schoolRef: AngularFirestoreDocument<any> = this.afs.doc(`users/${school.uid}`);
schoolRef.valueChanges()
.pipe(
take(1),
switchMap(schoolData => {
const data = {
userId: userId,
schoolId: school.uid,
active: school.active,
activeSchoolImageURL: school.active ? schoolData.schoolImageURL : null,
activeSchoolLogoURL: schoolData.schoolImageLogoURL
};
return of(userSchoolsRef.set(data, { merge: true }));
})
)
.subscribe();
}
推荐阅读
- reactjs - 无法通过 github 桌面在 github 上部署 react 应用程序
- kotlin - 如何启动不阻止包含函数返回的协程?
- python - 给定一个 numpy 字符串数组,根据每个字符串的特定条件切片提取其索引的最佳方法是什么?
- oracle - 从 mule 4 调用存储过程时只接受数字和字符串值
- angular - 如何从 e2e 测试中读取环境文件?
- java - 与父上下文中的 spring-boot-auto-configure 冲突
- arrays - VBA:如何从函数传递字符串数组
- javascript - 我的图像在 base 64 中加载时间过长,如何加速进程
- r - 在 R 的函数中一起使用 hazArg() 和 rnorm?
- synology - 使用 synopkg 时,程序包不会在 Synology DMS 7.0.1 中启动/停止