更新 firebase firestore 文档内的字段,无需手动编写字段键来更新 Angular

2024-06-24

我如何在我的 firestore 中更新文档而不在代码中精确写入我想要更新的字段,因为已经通过表单到达: 假设 Angular 中的 HTML 标签已经带来了密钥和导入(要更新的那个):

HTML Tags
       <form [formGroup]="importNgForm" (submit)="addUniqueImport()">
            <div class="modal-body">
              <div class="form-group">
                <label for="key"></label>
                <input disabled type="text" value='{{incomeSelected}}' name="key" class="form-control" formControlName="key" />
               </div>

              <div class="form-group">
                <label for="import">Add amount</label>
                <input type="number" name="import" class="form-control" formControlName="import" />
               </div>
             </div>

             <div class="modal-footer">
              <button type="submit" class="btn btn-primary">Add</button>
             </div>
......more code

然后在我的 html 组件上:

some imports...

export class UserSheetBalanceComponent implements OnInit {

importNgForm: FormGroup;

 constructor(
    private service: Service,
    private amountBuilder:FormBuilder,
  ) {
    this.importNgForm = this.amountBuilder.group({
      key:new FormControl(),
      import:new FormControl(),
    });
  }

  addUniqueImport() {
    this.service.addingImport(this.importNgForm.value as addImport)
  }

最后在我的服务组件上我只是尝试传递表单带来的参数:

 addingImport(dataToPass: addImport) {

    const path = this.docCreator
      .collection('users')
      .doc(this.userdata.uid)
      .collection('Incomings')
      .doc(this.userdata.uid);=====>Path reaching the doc to update

直到声明访问该字段所在文档的路径。但是,当尝试引用我想要通过表单 (dataToPass.key) 更新的字段的名称时,以及该字段的导入,我正在引用 (dataToPass.key) 。导入)出现错误。

   path.update({dataToPass.key:dataToPass.import}) ====>doesn't work
   }

问题出在关键处,假设我没有访问我的表单(dataToPass),而是直接写入要更新的字段的名称(某个名称),我确实可以工作

   path.update({some name:dataToPass.import}) ======>does work
   }

所以我想知道如何在不精确写入的情况下访问该字段键,而是动态地访问该字段键,以便在查询中的字段匹配后更新我的导入 提前致谢!!!!


如果您引用了 firebase 中的对象

const path = this.docCreator
  .collection('users')
  .doc(this.userdata.uid)
  .collection('Incomings')
  .doc(this.userdata.uid);

您可以创建空对象并使用来自的键名称dataToPass.key设置属性

let foo: any = {};
foo[`${dataToPass.key}`] = dataToPass.import;
path.update(foo);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新 firebase firestore 文档内的字段,无需手动编写字段键来更新 Angular 的相关文章

随机推荐