首页 文章

推送到firebase数据库时如何设置推送键?

提问于
浏览
3

当我从前端(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下

simple image

我不知道pushID就无法访问数据 .
我想要的最好的情况是路径/我自己的pushID /数据

非常感谢你的帮助!!

2 回答

  • 1

    如果要循环遍历所有消息:

    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);
      });
    });
    

    有关此内容的更多信息,请阅读reading lists of datasorting and filtering data上的Firebase文档,并获取Firebase codelab .

  • 1

    密钥应该是唯一的 . 您可以 set 这样自己的密钥而不是 push

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

    yourUniqueId 可以是 auth uidemail 的用户,就像一些独特的东西 .

相关问题