angular - Angular Firebase - 如何将属性添加到firestore中的文档?
问题描述
我对 Angular Firebase 解决方案有疑问。
我想要做的是将一个属性添加到firestore文档中已经存在的属性。
我的用户界面看起来像这样
export interface User {
email: string;
uid: string;
photoURL?: string;
displayName?: string;
teams?: string[];
}
我想创建一个团队并将该团队 ID 添加到teams
现有用户对象的数组中。
我不想获取所有用户数据,而只是为该字段添加一个新值。
那可能吗?也许您对如何更有效地做到这一点有一些建议?
团队界面是这样的
export interface Team {
name: string;
description?: string;
admin?: string; // = creator - first user
members?: string[]; // array of users UIDs.
boards?: string[]; // array of board docs id.
}
负责添加团队的组件只是一个表单,所以 `onSubmit()' 我尝试执行以下操作,但我不知道如何将该团队文档 ID 放入用户对象。
onSubmit(form: NgForm) {
const newTeam: Team = {
name: form.value.name,
description: form.value.description,
admin: this.auth.currentUserId,
members: [this.auth.currentUserId],
};
const userRef: AngularFirestoreDocument<any> = this.afs.doc(
`users/${this.auth.currentUserId}`
);
let teamRefId = '';
this.afs.collection('teams').add(newTeam).then((docRef) => teamRefId = docRef.id);
this.router.navigateByUrl('/dash');
}
有任何想法吗?也许这应该是某种传播运算符,但我又不想获取用户对象并将其发布回firestore,而只是更新一个字段......
解决方案
您可以通过使用以下内容更新文档来做到这一点:
let teamArray = []; // if not excisting.
teamArray.push(teamRefId); // or just add it if it's.
userRef.update({teams: teamArray});
除了团队之外,更新不会改变其他任何东西。如果团队不存在,则将添加团队。
推荐阅读
- java - 在多模块Maven项目中将文件从一个目标文件夹复制到另一个
- java - 使用 BufferedReader 从 textFile 的输入创建一个数组
- javascript - onClick 中的一个项目
- 改变颜色
- html - 如何纠正 div、float 和边框对齐的问题
- python - 关于分类的评价方法
- python - 为什么 Numpy 的图像 RGB 数组表示有 4 层而不是 3 层?
- android - 从firebase获取消息后如何更改应用程序中的视图?
- java - 在典型的微服务架构中,如何链接各个微服务的独立 RDBMS 数据库中的相关数据?
- docker - 如何创建包含公共和私有图像的 docker-compose.yml 文件?
- python - multiprocessing.Queue 不能用作类中的实例变量?