此错误是什么意思? (功能键)

问题描述 投票:-3回答:2

[因此,我正在执行一项功能,将图像和描述添加到我的Firebase控制台,并在我的应用程序上显示图像和描述,但是当我单击“添加”按钮时收到此错误。奇怪的是,我仍然可以将图像和说明添加到我的Firebase控制台中并在我的应用程序中显示,这意味着没有问题,但是只要我单击“添加”按钮,此错误就会不断出现。

我的错误显示在图像上,并且我包含以下包含错误的代码以供参考。

enter image description here

var selectedRestKey = "";

    function loadData() {
        var ref = firebase.database().ref('reviews');

        ref.on('value', function (snapshot) {
            var reviewList = "";
            var items = snapshot.val();
            var datakeys = Object.keys(items);
            console.log("datakey" + datakeys);
            console.log("items" + items);
            datakeys.forEach(function (key) {
                var storeName = items[key].store_name;
                var reviewDesc = items[key].review_description;
                var reviewImage = items[key].review_pic;
                reviewList += "<li><a href='#' onclick='showDetail(\"" +
                    key + "\")'><img src='" + reviewImage + "' \><h3>" + storeName +
                    "</h3><p>" + reviewDesc + "</p></a></li>";
            });
            $('#reviewListView').html(reviewList);
            $('#reviewListView').listview('refresh');
        });
    }

    function showDetail(key) {
        selectedRestKey = key;
        $(":mobile-pagecontainer").pagecontainer("change", "#reviewDetails", { role: "page" });
    }
jquery firebase jquery-ui firebase-realtime-database jquery-mobile
2个回答
0
投票

错误提示您查看util.ts第598行。找到该行并对其进行仔细的研究。该错误消息还表明您可能正在处理未定义或空对象。这可能意味着您正在将无效值传递给Object.keys()

我的猜测是,snapshot.val()返回的是null,您可以从链接的API文档中看到,当您查询的数据库中的位置没有数据时,将发生这种情况。


0
投票

该错误涉及以下几行:

var items = snapshot.val();
var datakeys = Object.keys(items);

这表明itemsnull值。这很可能意味着snapshot也是null或不是具有value属性的对象或元素。

示例:

$(function() {
  function log(s) {
    $("<pre>").html(s).appendTo("body");
    return s;
  }
  var arr = ["one", "two", "three"];
  var obj = {
    "one": 1,
    "two": 2,
    "three": 3
  };
  var nll = null;
  var und = undefined;
  try {
    console.log(log(Object.keys(arr).join(", ")));
  } catch (err) {
    console.log("ERR: " + log(err));
  }
  try {
    console.log(log(Object.keys(obj).join(", ")));
  } catch (err) {
    console.log("ERR: " + log(err));
  }
  try {
    log()
    console.log(log(Object.keys(nll)));
  } catch (err) {
    console.log("ERR: " + log(err));
  }
  try {
    console.log(log(Object.keys(und)));
  } catch (err) {
    console.log("ERR: " + log(err));
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

如您所见,前两个完整无误,最后两个错误。

© www.soinside.com 2019 - 2024. All rights reserved.