更新firebase firestore doc里面的字段,不需要手写字段键更新Angular。

我怎么能在我的firestore里更新一个文档,而不在代码中精确地写上我想更新的字段,因为已经通过表单达到了:.假设Angular中的HTML标签已经带来了key和import(要更新的那个)。

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.import)时,出现了错误。

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

问题出在key上,比方说我没有访问我的表单(dataToPass),而是直接写了要更新的字段名(某个名字),我确实能做到。

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

所以,我想知道,我怎么能访问该字段键,而不是精确地写它,但动态地,为了更新我的导入,一旦该字段在查询匹配Thanks in advance!!!

解决方案:

如果你有引用对象在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);

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何在WPF中定义文本块背景矩形周围的描边?

2022-11-8 8:37:26

未分类

为什么我在Visual Studio的AngularJS项目中,$invalid、$valid、$dirty不能用?

2022-11-8 8:48:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索