从数据库返回的密钥与显示的密钥不同

时间:2017-07-30 10:34:39

标签: typescript firebase-realtime-database angularfire

我正在尝试获取Firebase数据库在将Item推送到数据库时生成的密钥,但是,返回的密钥具有不同的值。在照片中,您可以看到'key'(-kqI0bxKg ...)的值与推送的对象主键的值不同。为什么返回一个不同的键(-kql0bxKgq ...)?我如何使用angularfire和typescript来解决这个问题?

  handler: data => {
    this.afAuth.authState.subscribe(auth => {
        const currentUser = auth.uid;
        var myRef = this.afDatabase.database.ref().push()
        var myKey = myRef.key;
        console.log(myKey);
        var newEntry = {
            description: data.description,
            number: 0,
            createdBy: currentUser,
            key: myKey
        }
        this.afDatabase.list('whatIWant').push(newEntry);
    })
  }

Firebase database

1 个答案:

答案 0 :(得分:1)

每次拨打push()时,都会生成一个新ID。由于您在代码中的两个位置调用push(),因此您生成两个单独的ID。要在这两个地方使用相同的ID,请拨打push()一次并在两个地方使用新的参考:

    var myRef = this.afDatabase.database.ref().push()
    var myKey = myRef.key;
    ...
    myRef.set(newEntry);