[因此,我正在执行一项功能,将图像和描述添加到我的Firebase控制台,并在我的应用程序上显示图像和描述,但是当我单击“添加”按钮时收到此错误。奇怪的是,我仍然可以将图像和说明添加到我的Firebase控制台中并在我的应用程序中显示,这意味着没有问题,但是只要我单击“添加”按钮,此错误就会不断出现。
我的错误显示在图像上,并且我包含以下包含错误的代码以供参考。
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" });
}
错误提示您查看util.ts第598行。找到该行并对其进行仔细的研究。该错误消息还表明您可能正在处理未定义或空对象。这可能意味着您正在将无效值传递给Object.keys()
。
我的猜测是,snapshot.val()返回的是null,您可以从链接的API文档中看到,当您查询的数据库中的位置没有数据时,将发生这种情况。
该错误涉及以下几行:
var items = snapshot.val();
var datakeys = Object.keys(items);
这表明items
是null
值。这很可能意味着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>
如您所见,前两个完整无误,最后两个错误。