因为我是angular和Ionic的新手,所以我正在尝试更新用户的特定领域。我想要显示来自firebase的所有数据,并且只更新一个字段。我只能为登录的一个用户做,但不能为所有用户做。
export class AdminPage implements OnInit {
user:any;
userId:string;
enableAccess:boolean;
constructor(
private auth:AuthService,
private router:Router,
private afs:AngularFirestore,
private loadingCtrl:LoadingController,
private toastr:ToastController) { }
ngOnInit() {
this.auth.getAllUser().subscribe(user=>{
this.user=user;
})
this.auth.user$.subscribe(user=>{
this.enableAccess=user.IsApproved;
})
}
async updateUserInfo(){
const loading=await this.loadingCtrl.create({
message:'updating',
spinner:'crescent',
showBackdrop:true
})
loading.present()
this.afs.collection('user').doc(this.userId).set({
'IsApproved':this.user.enableAccess
},{merge:true}).then(()=>{
this.toast('update sucessful','success');
}).catch(error=>{
loading.dismiss();
this.toast(error.message,'danger');
})
}
async toast(message,status){
const toast =await this.toastr.create({
message:message,
color: status,
position: 'top',
duration:2000
});
}
}组件
ion-content>
<ion-card>
<ion-item>
<ion-label position="floating">Email:</ion-label>
<p></p>
</ion-item>
<ion-item>
<ion-label position="floating">Enable Access:</ion-label>
<ion-input
required
type="boolean"
[(ngModel)]="enableAccess"
name="enableAccess"
></ion-input>
</ion-item>
<ion-button
type="submit"
expand="block"
shape="round"
(click)="updateUserInfo()"
>Update</ion-button
>
</ion-card>
</ion-content>我想要显示数据库中的每个用户的电子邮件,我想让管理员只更新enableAccess字段。如何获取所有用户并更新字段?
发布于 2021-10-13 02:28:27
这听起来像是您正在尝试为现有用户回填一些数据。如果是这样的话,我建议使用一次性的node.js脚本,而不是在客户端应用程序代码中。
在node.js中,这将如下所示:
const admin = require("firebase-admin");
admin.initializeApp(...);
const db = admin.firestore();
db.collection("user").get((snapshot) => {
snapshot.forEach((doc) => {
doc.ref.update({ IsApproved: false });
});
});如果您坚持在客户端代码中执行此操作,则几乎是相同的。考虑到这不会立即影响UI,我建议通过常规的SDK在JavaScript中进行回填。
即使结果显示在JavaScript UI中,AngularFire也是建立在Angular SDK之上的,因此它们可以完美地互操作。这意味着,即使你通过(更简单的) JavaScript软件开发工具包进行更新,更新也会立即显示在AngularFire中。
https://stackoverflow.com/questions/69548717
复制相似问题