当我尝试更新FireStore集合中的数据时收到错误

时间:2019-04-24 17:12:45

标签: angular firebase google-cloud-functions angular7

我开始编写新网站的代码,并搜索更新fireStore数据库上的“用户”集合

我正在使用Angular 7和Cloud Firestore。

我创建了第一个集合“用户”,其中包含我的会员信息

我的收藏屏幕。

collection screen

进入我的想法,您可以看到我的更新用户数据功能

  // Update User
  UpdateUser(user: User){
    this.userRef.update({
      firstName: user.firstName,
      lastName: user.lastName,
      displayName: user.displayName,
      photoURL: user.photoURL,
      emailVerified: user.emailVerified,
      birthday: user.birthday,
      addressOne: user.addressOne,
      addressTwo: user.addressTwo,
      zipCode: user.zipCode,
      city: user.city,
      country: user.country,
      phoneOne: user.phoneOne,
      phoneTwo: user.phoneTwo,
      profilType: user.profilType,
      profilPicture: user.profilPicture,
      admin: user.admin,
      moderator: user.admin
    })
  }

您将在这里看到我的表单更新功能

  updateUserData(){
    this.edituserprofileForm = this.fb.group({
      firstName: ['', [Validators, Validators.minLength(2)]],
      lastName: ['', [Validators, Validators.minLength(2)]],
      address: [],
      address2: [],
      city: [],
      country: [],
      zipCode: ['', [Validators.pattern('^[0-9]+$')]],
      phoneOne: ['', [Validators.pattern('^[0-9]+$')]]
    })
  }

  goBack(){
    this.location.back();
  }

  UserUpdateForm(){
    this.crudApi.UpdateUser(this.edituserprofileForm.value) // Update user data using  CRUD API
    console.log(this.edituserprofileForm.value);
  }

此刻,当我提交表格时,我会收到此错误

  

Reference.update失败:第一个参数包含未定义的属性'edit.eSwVu5bujlYkSH8gZiIlW0LHz5i2.displayName'       在validateFirebaseData上

我不明白为什么会收到此错误

多谢

1 个答案:

答案 0 :(得分:1)

您的表单仅具有地址数据,但是在更新功能中,您还更新了displayNamephotoURL等,这些在函数从您的用户表单接收的用户对象中是未定义的。

您应该删除缺少的数据字段或创建新功能以更新表单数据。

UpdateUser(user: User){
  this.userRef.update({
    firstName: user.firstName,
    lastName: user.lastName,
    addressOne: user.addressOne,
    addressTwo: user.addressTwo,
    zipCode: user.zipCode,
    city: user.city,
    country: user.country,
    phoneOne: user.phoneOne
  })
}