我正在使用firebase数据库,它有多个集合,并使用包含的代码,能够成功返回包含所有景点的数组,其area_id与e.target的area_id匹配。
但是,我的代码中的某些内容正在将attraction.id(不同于area_id的键)更改为数组中对象的索引。因此,id 1变为0,2变为1等等......
起初我以为它发生在Object.keys中,所以我在它之前放置了一个控制台日志,并且更改已经存在。所以,我几乎肯定它在查询中发生了。非常感谢任何帮助。
const getAttractionsByArea = (area_id) => {
let attractions = [];
return new Promise((resolve, reject) => {
$.ajax(`https://theme-park.firebaseio.com/attractions.json?orderBy="area_id"&equalTo=${area_id}`)
.then((results) => {
Object.keys(results).forEach((result) => {
results[result].id = result;
attractions.push(results[result]);
});
resolve(attractions);
}).catch((err) => {
reject(err);
});
});
};
答案 0 :(得分:0)
问题似乎是您在循环时将每个单独记录的ID设置为当前密钥索引。
请记住,Object.keys返回的字符串数组等于该对象的可枚举属性,在您的情况下是一个数组。这意味着您将获得一系列索引。
你有这一行
结果[结果] .id =结果;
您正在将每个元素的id设置为它的索引,因此如果db id中的元素为54,例如它现在被设置为1,如果它是您的集合中的第二个结果。
我不确定你为什么要在那里开始那条线,但是试着评论那条线并看看你得到了什么。