【问题标题】:How to use firebase realtime database without node.js如何在没有 node.js 的情况下使用 firebase 实时数据库
【发布时间】:2017-11-21 13:22:09
【问题描述】:

我是 Firebase 实时数据库的新手,我想在我的项目中实现 firebase 实时数据库,但不想使用 node.js。是否可以 ?请帮我解决这个问题。

如果可以在不使用 node.js 的情况下使用 firebase 实时数据库,那么我该如何进一步进行。我还在下面放置了我的示例代码。请给我一些建议。

var config = {
apiKey: "AIzaSyAEERy5Jbnns9CUurD7NwmOXXXXXXXXXX",
authDomain: "testing-XXXXX-db.firebaseapp.com",
databaseURL: "https://testing-XXXXX-db.firebaseio.com",
projectId: "testing-XXXXXX-db",
storageBucket: "testing-XXXXX-db.appspot.com",
messagingSenderId: "25861013XXXX"
};
firebase.initializeApp(config);

// Get a reference to the database service
var database = firebase.database();

我已经成功初始化了它,我也从云数据库中得到了结果。

firebase.database().ref("/chat").orderByChild("name").on("value", function(snapshot) {
      snapshot.forEach(function(childSnapshot) {

    // key
    var key = childSnapshot.key;
    // value, could be object
    var childData = childSnapshot.val();

    console.log(childData);
    $("#history").append('<div class="container"><p>'+childData.name+':'+childData.message+'</p><span class="time"> Time : '+childData.time+' </span></div>');
  });
});

当我想使用数据库触发器实时更新聊天应用程序时,问题来了。

我想使用以下事件/功能。

onWrite(), which triggers when data is created, destroyed, or changed in the Realtime Database.
onCreate(), which triggers when new data is created in the Realtime Database.
onUpdate(), which triggers when data is updated in the Realtime Database.
onDelete(), which triggers when data is deleted from the Realtime Database.

非常感谢任何帮助。为糟糕的语法/语言道歉。请不要给予负面评价,因为我真的被困在这个问题上。

【问题讨论】:

  • 我不清楚你想要完成什么。如果您尝试从 Web 应用程序访问 Firebase 实时数据库,请阅读 relevant documentation 并关注 codelab。例如,这将教您收听 on('child_added' 以了解您网络应用程序数据库中的(新)聊天消息。

标签: javascript firebase firebase-realtime-database


【解决方案1】:

我对 Firebase 的经验并不是最丰富的,但据我了解,您列出的那些功能是通过使用 Cloud Functions 触发的,不需要响应浏览器中的更改。

在浏览器中,要响应子更改,请使用child_changed

 firebase.database().ref("chat").orderByChild("name").on("child_changed", function(snapshot) {
     //-- Whatever.
 });

要响应子添加,请使用child_added

 firebase.database().ref("chat").orderByChild("name").on("child_added",      function(snapshot) {
     //-- Whatever.
 });

要响应删除子项,请使用child_removed

 firebase.database().ref("chat").orderByChild("name").on("child_removed", function(snapshot) {
          //-- Whatever.
 });

另外,请注意,如果您将 .on("value") 用于任何内容,则每次数据以任何方式更改时都会返回一个新数据集,这意味着这可能会每次都返回 entiiiiiiiiiiiire 聊天发送一条新消息,而不是仅仅返回新消息。可能不想这样做:

 firebase.database().ref("chat").orderByChild("name").on("value", function (){});

如果您只想获取该聊天数据一次,请使用.once("value")

我希望这会有所帮助?

【讨论】:

    猜你喜欢
    • 2023-01-12
    • 2021-11-26
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多