为什么这个push()覆盖而不是添加?

时间:2018-06-01 00:31:11

标签: firebase firebase-realtime-database google-cloud-functions

我在http callable Firebase函数中有一行代码,可以将新记录添加到Firebase数据库中的某个位置。

return admin.database().ref('games/' + gameid + '/' + uid + '/logs/').push().set({guess: guess, result: pigs.toString() + 'P ' + bulls.toString() + 'B', score: score});

以下是我的数据库中的示例条目。

"games" : {
    "39dba69c-f5a8-4e94-9553-d19372d43a92" : {
      "1P0mWbp1jYOayaMEyQcnKvX4YB63" : {
        "logs" : {
          "-LDshYx2wJK6eT47_OVQ" : {
            "guess" : "5647",
            "result" : "1P 1B",
            "score" : 450
          }
        },
        "maxbulls" : 3,
        "maxpigs" : 3,
        "moves" : 6,
        "score" : 450
      },
      "answer" : "2739dba69c41",
      "id" : "39dba69c-f5a8-4e94-9553-d19372d43a92",
      "requestor" : "1P0mWbp1jYOayaMEyQcnKvX4YB63",
      "status" : "pending",
      "turn" : ""
    }
  }

由于某种原因,set()覆盖了日志下的记录(ID为-LDshYx2wJK6eT47_OVQ)。我希望它使用push()中自动生成的密钥在日志下添加新记录。我之前使用了一种非常类似的方法(基本上没有差异),按预期工作。

我也尝试将set()更改为update(),但它仍然覆盖了。我忽略了我的路径或数据库结构有什么问题吗?感谢。

0 个答案:

没有答案