Angular 2(版本5)中某个键的firebase更新值

时间:2018-07-09 17:44:54

标签: angular typescript firebase-realtime-database angular5

当我将数据(使用push()方法)插入Firebase时,它将生成一个随机密钥,如图所示。我可以使用随机数(-LExEhDWjw​​Xcj6rGZar9)更新键值(名称和年龄)

现在我要实现的是,我要在不使用**-LExEhDWjw​​Xcj6rGZar9 <的情况下更新键值(名称:“ Manjeshwar”年龄:“ 27”至名称:“ somename”年龄:“ 20”) / strong>随机密钥**。我想动态更新。

2 个答案:

答案 0 :(得分:1)

要获取密钥,您必须知道该密钥下的某事。假设您知道用户名,则可以使用该名称查询所有用户并更新它们:

var ref = firebase.database().ref("employees");
ref.orderByChild("name").equalTo("manjeshwar s").once("value", function(snapshot) {
  snapshot.forEach(function(employee) {
    employee.ref.update({ age: "20" });
  });
});

请注意,如果有多个以此名称命名的员工,则将全部更新。

如果员工名称是唯一的,请考虑实际使用这些名称作为每个员工节点的键:

employees
  "manjeshwar s": {
    ...
  }
  "puf": {
    ...
  }

使用此结构,可以保证员工名称是唯一的。您可以不进行查询就更新它们:

ref.child("manjeshwar s").update({ age: "20" });

答案 1 :(得分:0)

经过大量研究,我得到了自己问题的答案。 答案:要获取密钥,只需在Angular2中使用“ $ key” ,这样您就可以更新要更新的任何随机密钥的值,如下面的代码所示。

Component.html:

    <div class="employees" *ngFor="let e of employees | async">
        <ul>
                <li>Name: {{e.name }}</li>
                <li>Age: {{e.age}}</li>
                <li>Random Key: {{e.$key }}</li> //outputs random key
                <button class="btn btn-primary" (click)="goToDetails(e, '$key')">Edit</button>
        </ul>

    </div>
//form to update the values
<div id="uform" class="col-md-4" hidden>
    <input class="form-control col-md-3" type="text" placeholder="Name" id="uname"  name="name">
    <input class="form-control col-md-3" type="number" placeholder="Age" id="uage"   age = "age">

    <button class="btn btn-primary" (click) = update()>Update</button>
</div>

Component.ts:

  //Function to get id of form
  getInputVal(id){
    return (<HTMLInputElement>document.getElementById(id)).value;
  }

  fbkey:string = ''; //global variable

   goToDetails(employees:{},key:string) {
    this.fbkey = employees[key];  
    document.getElementById("uform").style.display = "block";
  }
  update(){
    //Get Values
    var name =this.getInputVal('uname');
    var age= this.getInputVal('uage');
    this.updateF(name, age);
  }

  updateF(name, age){
    this.af.database.object('employees/'+this.fbkey).set({
      name: name,
      age: age

    })
  }

因此,使用“ $ key” ,我们可以动态更新该特定键的值。