【问题标题】:ajax query changing object key value to indexajax查询将对象键值更改为索引
【发布时间】:2018-04-21 09:35:33
【问题描述】:

我正在使用一个具有多个集合的 firebase 数据库,并且使用包含的代码,能够成功返回一个数组,该数组包含一个 area_id 与 e.target 的 area_id 匹配的所有景点。

但是,我的代码中的某些内容正在将traction.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);
      });
  });
};

【问题讨论】:

    标签: javascript ajax firebase firebase-realtime-database promise


    【解决方案1】:

    问题似乎是您在循环时将每个单独记录的 id 设置为当前键索引。

    请记住,Object.keys 返回一个字符串数组,该数组等于该对象的可枚举属性,在您的例子中是一个数组。这意味着您将获得一组索引。

    你有这条线

    结果[结果].id = 结果;

    您将每个元素的 id 设置为其索引,因此如果 db id 中的元素为 54,例如,如果它是您集合中的第二个结果,则现在将其设置为 1。

    我不知道你为什么一开始就有那行,但试着注释掉那行,看看你得到了什么。

    【讨论】:

      猜你喜欢
      • 2023-02-20
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 2019-11-10
      相关资源
      最近更新 更多