推入Firebase数据库时如何设置按键?

当我从前端(Angular 4)和后端(Firebase函数)向Firebase数据库写入数据时,Firebase会生成一个按键。 使用这个密钥,我将来无法访问数据,因为密钥是唯一的。 我想知道是我可以自己设置密钥的任何方式,或者我可以在不知道密钥的情况下访问数据?

这是我从前端的代码:

this.db.list(`${this.basePath}/`).push(upload); 

这是我的后端代码:

 admin.database().ref('/messages').push({original: original}).then(function (snapshot) { res.redirect(303, snapshot.ref);}); 

我推送的所有数据将在path / pushID / data下

简单的图像

在不知道pushID的情况下,我无法访问数据。
我想要的最好的情况是path/我自己的pushID /数据

非常感谢您的帮助!

钥匙应该以任何方式是唯一的。 您可以set自己的键,而不是push

 admin.database().ref('/messages/'+ yourUniqueId).set({original: original}).then(function (snapshot) { res.redirect(303, snapshot.ref);}); 

yourUniqueId可以是auth uid或用户的email ,如独特的东西。

如果你想循环所有的消息:

 var ref = firebase.database().ref("messages"); ref.once("value", function(snapshot) { snapshot.forEach(function(message) { console.log(message.key+": "+message.val().original); }); }); 

如果您想查找特定的消息,请使用查询:

 var ref = firebase.database().ref("messages"); var query = ref.orderByChild("original").equalTo("aaaa"); query.once("value", function(snapshot) { snapshot.forEach(function(message) { console.log(message.key+": "+message.val().original); }); }); 

有关这方面的更多信息,请阅读关于阅读数据列表的Firebase文档, 对数据进行 sorting和过滤 ,然后使用Firebase代码实验室 。