Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新类的数据但忽略一个字段(Angular、Firestore、AngularFire2)_Angular_Typescript_Angularfire2 - Fatal编程技术网

更新类的数据但忽略一个字段(Angular、Firestore、AngularFire2)

更新类的数据但忽略一个字段(Angular、Firestore、AngularFire2),angular,typescript,angularfire2,Angular,Typescript,Angularfire2,我想在每次用户登录时更新Firestore中的几个字段。我有以下方法 private updateUserData(user: firebase.User) { const userRef: AngularFirestoreDocument<AppUser> = this.afs.doc( `users/${user.uid}` ); const data: AppUser = { uid: user.uid, ema

我想在每次用户登录时更新Firestore中的几个字段。我有以下方法

  private updateUserData(user: firebase.User) {
    const userRef: AngularFirestoreDocument<AppUser> = this.afs.doc(
      `users/${user.uid}`
    );

    const data: AppUser = {
      uid: user.uid,
      email: user.email,
      name: user.displayName
    };
    return userRef.set(data, { merge: true });
  }
我想更新除isAdmin字段之外的所有内容,所以我创建了一个变量:

const data: AppUser = {
  uid: user.uid,
  email: user.email,
  name: user.displayName
};
代码运行良好,但我得到一个编译器错误,它正在查找isAdmin字段。是否有任何方法可以忽略更改isAdmin字段


我认为您需要在AppUser类中将
isAdmin
字段设置为可选字段。这可能就是你出错的原因。另外,如果您只想定义JS对象的类型,我可以考虑使用<代码>接口<代码>,而不是类。 然后,为了简单地忽略该字段,我建议使用Lodash

  import * as _ from 'lodash';


  private updateUserData(user: firebase.User) {
    const userRef: AngularFirestoreDocument<AppUser> = this.afs.doc(
      `users/${user.uid}`
    );

    return userRef.set(_.omit(data, 'isAdmin'), { merge: true });
  }
从“lodash”导入*as uuu;
私有updateUserData(用户:firebase.user){

const userRef:AngularFirestoreDocument

当然……除了isAdmin.Thansk之外,其他所有字段都可以为空!
  import * as _ from 'lodash';


  private updateUserData(user: firebase.User) {
    const userRef: AngularFirestoreDocument<AppUser> = this.afs.doc(
      `users/${user.uid}`
    );

    return userRef.set(_.omit(data, 'isAdmin'), { merge: true });
  }