我不知道为什么,但是我的代码无法正常工作。 我想在我的网页中使用Firebase实时数据库,但是一旦我添加了Firebase的内容,执行我的代码就什么都不用了。 Chrome在我的代码中没有发现任何错误。 您能告诉我,为什么它不起作用。我做错什么了吗?
非常感谢你, 尼康
PS:我将代码中的API密钥替换为“ |”因此您看不到我的API密钥:)
我在Chrome和W3Schools的Tryit Editor中执行了代码。另外,我尝试了很多次更改代码,但是没有办法使我达到目标。
<script src="https://www.gstatic.com/firebasejs/6.6.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/6.6.0/firebase-database.js">
var config = {
apiKey: "|||||||||||||||||||||||||||||||||||||",
authDomain: "littleappsdatabase.firebaseapp.com",
databaseURL: "https://littleappsdatabase.firebaseio.com",
storageBucket: "littleappsdatabase.appspot.com"
};
firebase.initializeApp(config);
var database = firebase.database();
function getTermine () {
firebase.database()
.ref('/users/' + userId)
.once('value')
.then(function(snapshot) {
var termine = (snapshot.val() && snapshot.val().calendar) || 'Keine Termine vorhanden';
});
return (termine);
}
var list = getTermine();
document.write('<h4>', list.replace(';', '<br><br>'), '</h4>');
</script>
我认为它会延迟显示给定标签的值。
答案 0 :(得分:1)
我已编辑您的问题,以正确设置代码格式。现在您可以清楚地看到,您正在外部函数termine
中返回一个未定义的getTermine()
变量。显然,这将不包含您想要的结果。
此外,我怀疑您正在运行的代码是异步的,因此您无法以同步方式返回该值。但是,您可以创建一个回调函数,一旦该值可用,该函数就会被调用。像这样:
function getTermine(callback) {
firebase.database()
.ref('/users/' + userId)
.once('value')
.then(function(snapshot) {
var termine = (snapshot.val() && snapshot.val().calendar) || 'Keine Termine vorhanden';
callback(termine);
});
}
getTermine(function(list) {
document.write('<h4>', list.replace(';', '<br><br>'), '</h4>');
);
希望有帮助。在工作时请注意代码的布局,因为正确缩进代码很容易发现这些错误。