javascript - 项目不可迭代
问题描述
我尝试创建一个搜索功能和过滤功能widt javascript。我从Firebase获取数据。
也许我只是累了,但我无法到达“this.retter”,因为它不可迭代。任何人都可以帮忙 - 我如何参考这个数据列表?:-)
//CLASS AND READ
class MadService {
constructor() {
this.foodRef = firebaseDB.collection("madretter");
this.userRef = firebaseDB.collection("users");
this.authUser;
this.authUserRef;
this.retter;
this.read();
}
read() {
// SE DATABASEN OM DER ER ÆNDRINGER
this.foodRef.onSnapshot(snapshotData => {
let retter = [];
snapshotData.forEach(doc => {
let ret = doc.data();
ret.id = doc.id;
retter.push(ret);
});
this.appendFood(retter);
});
}
//SEARCH FUNCTiONALITY
//SØGEFUNKITONEN
search(value) {
let searchQuery = value.toLowerCase();
let searchFood = [];
for (let ret of this.retter) {
let overskrift = ret.name.toLowerCase();
if (overskrift.includes(searchQuery)) {
searchFood.push(ret);
}
}
console.log(searchFood);
this.appendFood(searchFood);
}
谢谢!:-)
解决方案
this.retter
在undefined
您的代码中。在尝试对其进行迭代之前,您需要在某个时刻将其初始化为可迭代对象。下面是将其初始化为数组的示例(this.retter = [];
在构造函数中注意)。
我添加了addPhonyData
方法并注释掉了一些东西,所以代码可以作为一个例子:
//CLASS AND READ
class MadService {
constructor() {
this.foodRef; // = firebaseDB.collection("madretter");
this.userRef; // = firebaseDB.collection("users");
this.authUser;
this.authUserRef;
this.retter = [];
//this.read();
this.addPhonyData();
}
read() {
// SE DATABASEN OM DER ER ÆNDRINGER
this.foodRef.onSnapshot(snapshotData => {
let retter = [];
snapshotData.forEach(doc => {
let ret = doc.data();
ret.id = doc.id;
retter.push(ret);
});
this.appendFood(retter);
});
}
addPhonyData() {
this.retter.push({
name: 'DuMMy'
});
}
search(value) {
let searchQuery = value.toLowerCase();
let searchFood = [];
for (let ret of this.retter) {
let overskrift = ret.name.toLowerCase();
if (overskrift.includes(searchQuery)) {
searchFood.push(ret);
}
}
console.log(searchFood);
//this.appendFood(searchFood); - not defined
}
}
const ms = new MadService();
ms.search('dummy');
推荐阅读
- python - 如何检查包含 6 个项目的列表中是否有 3 个或 4 个或 5 个连续数字?
- amazon-web-services - 如何修复提供程序 provider.aws 不支持数据源
- django-models - django latest() 按模板中的列表
- javascript - 如果我没有时间戳,AJAX 长轮询的最佳实践
- notepad++ - 在记事本++中使用正则表达式时卡住了
- python - Django 错误:/trade/confirm/ 处的 TemplateDoesNotExist
- python - 从现有列创建新列
- python - 如何编写函数计算python中未绑定数据集的运行平均值?
- aframe - 如何在帧中使用运动记录?
- javascript - 预期 2 个参数,但得到 1.ts(2554) index.ts(54, 112):未提供 'arg1' 的参数