gpt4 book ai didi

javascript - 在 JavaScript 中读取 Firebase 数据库后,For 循环不起作用

转载 作者:行者123 更新时间:2023-12-02 20:52:31 25 4
gpt4 key购买 nike

我的 Firebase 实时数据库中有很多文章,并且我用一系列数字命名了它们的节点。

我想使用for循环检索它们。在此之前,我检查有多少文章可用,然后相应地运行 FOR 循环。但是,当我收到可用文章的数量时,程序会停止并且 for 循环不会运行。

这是我的代码:

let numOfArticlesAvailable;

const numOfArticlesRef = firebase.database().ref('/articles/available-count');
numOfArticlesRef.on('value', function (snapshot) {
console.log('Articles Available: ' + snapshot.val());
numOfArticlesAvailable = snapshot.val();
console.log(numOfArticlesAvailable);
})

for (let index = numOfArticlesAvailable; index >= 1; index--) {
const articlesRef = firebase.database().ref(`/articles/${index}`);
console.log(articlesRef);
articlesRef.on('value', function (snapshot) {
const title = snapshot.val().title;
const content = snapshot.val().content;
const timestamp = snapshot.val().timestamp;

console.log(`${title} has contents "${content}" and timestamp ${timestamp}`)
})
}

代码记录了可用文章的正确值,但 for 循环不会启动。

最佳答案

您的 for 循环未启动,因为 numOfArticlesRef.on('value', function (snapshot) { 是异步函数。这意味着在您 for 循环启动时, 的值numOfArticlesRef 要么是未定义的,要么是 0。或者类似的东西。尝试这样做:

let numOfArticlesAvailable;

const numOfArticlesRef = firebase.database().ref('/articles/available-count');
numOfArticlesRef.on('value', function (snapshot) {
console.log('Articles Available: ' + snapshot.val());
numOfArticlesAvailable = snapshot.val();
console.log(numOfArticlesAvailable);
for (let index = numOfArticlesAvailable; index >= 1; index--) {
const articlesRef = firebase.database().ref(`/articles/${index}`);
console.log(articlesRef);
articlesRef.on('value', function (snapshot) {
const title = snapshot.val().title;
const content = snapshot.val().content;
const timestamp = snapshot.val().timestamp;

console.log(`${title} has contents "${content}" and timestamp ${timestamp}`)
})
}

})

关于javascript - 在 JavaScript 中读取 Firebase 数据库后,For 循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61573728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com