【问题标题】:How to set push key when pushing to firebase database?推送到firebase数据库时如何设置推送键?
【发布时间】:2018-04-08 02:27:31
【问题描述】:

当我从前端(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 的情况下访问数据。
我想要的最好的情况是路径/我自己的 pushID/数据

非常感谢您的帮助!

【问题讨论】:

    标签: node.js angular firebase firebase-realtime-database google-cloud-functions


    【解决方案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

    【讨论】:

    【解决方案2】:

    键在任何情况下都应该是唯一的。你可以像这样set你自己的密钥而不是push

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 2019-12-15
      • 2020-07-08
      • 2020-03-25
      • 2021-08-28
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多