【问题标题】:Unable to write data on firebase even after successful attempt即使成功尝试,也无法在 Firebase 上写入数据
【发布时间】:2018-10-11 20:04:00
【问题描述】:

我试图在我的网络数据库中写入一些数据,但即使在显示成功发布数据的警报之后,数据也没有上传到 firebase。在我尝试添加将图像上传到 Firebase 存储的功能之前,它工作正常。该代码无法正常工作,因此我将其删除,但此后我无法将数据写入firebase。下面是我的代码,请看一下。

Javascript 代码:-

const realFileBtn = document.getElementById("real-file");
const customBtn = document.getElementById("custom-button");
const customText = document.getElementById("custom-text");

customBtn.addEventListener("click", function () {
    realFileBtn.click();
});
realFileBtn.addEventListener("click", function()
{
    if (realFileBtn.value) {
        customText.innerHTML = realFileBtn.value;
    }else{
        customText.innerHTML = "No file chosen, yet.";
    }
});

$("#createBtn").click(
    function(){

        var databaseRef = firebase.database().ref('posts/');
        alert(databaseRef);

        var Title = $("#tit").val();
        var desc =  $("#dees").val();



        if (Title !="" && desc != "") {
            var uid =  firebase.database().ref().child('posts').push().key;
            alert(uid);
            var data = {
                Title: Title,
                desc: desc,
                push: uid

            };
            var updates = {};
            updates['/posts/' + uid] = data;
            alert(updates);
            firebase.database().ref().update(updates);

            alert("You blog posted successfully!");  

            window.location.reload(); 
        }else{
            alert("All fields are necessary!"); 
        }




    }
    );

请看一下。

显示 databaseRef 的警报,显示 uid 的警报,显示成功发布数据的警报,但数据仍未存储在 firebase 实时数据库中。

【问题讨论】:

  • Java 之于 Javascript 就像 Pain 之于绘画,或者 Ham 之于 Hampster。它们完全不同。强烈建议有抱负的程序员尝试学习他们尝试编写代码的语言的名称。当您发布问题时,请适当地标记它。
  • 使用不同的标签只是为了传播线程以尽快获得解决方案作为一个android开发人员我完全意识到差异,这个社区可以帮助其他人解决问题他们自己无法解决的问题,所以如果您能帮助我而不是指出我的错误,我将不胜感激。
  • 如果标签与您的问题不直接相关,请不要添加 - 想要更快地解决问题并不是故意错误标记的有效借口。
  • 先生,现在我太想尽快解决这个错误,所以也许你说的是对的,但我没有那么多时间。感谢您的关注,但对我来说,摆脱这个错误比担心错误标记更重要。

标签: javascript firebase firebase-realtime-database


【解决方案1】:

问题是你在调用update()时忘记添加回调函数。让我们仔细看看这两行代码:

firebase.database().ref().update(updates);
alert("You blog posted successfully!");

很容易认为,如果update() 函数调用返回,则表明更新成功完成。但事实并非如此。为了让 Firebase Javascript API 与 Firebase 数据库进行通信,它需要提交一个 HTTP 请求,并且在 JavaScript 中只能异步完成。

在 Firebase API documentation 中,update() 的函数 签名update(values, onComplete),然后继续状态 返回包含 void 的 firebase.Promise

这意味着对update() 的调用在更新实际发生之前返回。要在实际发生更新时采取行动,您需要为onComplete 参数提供回调函数,或者使用Promise API,这是update() 返回的值。

使用 Promise API 的示例

firebase.database().ref().update(updates).then(function() {
    alert("You blog posted successfully!");
}, function(error) {
    alert("Oops, something went wrong!" + error);
});

【讨论】:

  • 嘿,谢谢你的帮助,至少现在我知道我可能在哪里搞砸了,但我正在尝试实现它,我想我无法做到这一点,你能通过优化给一点提示吗我的代码有点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多