【问题标题】:RealTime DataBase Sorting a list实时数据库对列表进行排序
【发布时间】:2021-01-05 02:09:39
【问题描述】:

我需要检索按值排序的数据列表

在我的服务中

getsalesarea()
{
 return this.zonesalesList = this.firebase.list ('zonesales');
}

在我的组件中

  ngOnInit() {
    return this.zsalesService.getsalesarea()
    .snapshotChanges().subscribe(item => {
    this.zsalesList = [];
    item.forEach(element => {
      let x = element.payload.toJSON();
      x["$key"] = element.key;
      this.zsalesList.push(x as Zsales);
    });
    });
  }

数据库

areasales
  -MIqXQgh33O9X6W04NA5kwp
    description: "Alaska"
    id: "100"
  -MIqXZRwH1397p6TLbda_zJ
    description: "Hawaii"
    id: "101"
  -MIqXc_sPU560ssq18o5UoL
    description: "Kentucky"
    id: "102"
  -MPhs9ci338gXs_l34LsJc1
    description: " New Jersey, New"
    id: "103"

此代码返回列表,但未排序。 如何按区域 id 对列表进行排序?

非常感谢

【问题讨论】:

    标签: angular firebase firebase-realtime-database


    【解决方案1】:

    list = orderBy(list, 'id','asc');检索列表时使用它。检索时可能是一些解决方案顺序,但如果您想在检索后实现,这就是方式

    【讨论】:

      【解决方案2】:

      第一件事

      • 在不进行其他关联时始终使用 const

      所以,这里正确的应该是这样的:

      const x = element.payload.toJSON()
      
      • 另一件事是,用有意义的名称命名变量

      您可以使用 saleZone

      而不是 x

      解决方案可以通过以下方式实现:

      this.zSalesList = item.map(element => 
        ({
           ...element.payload.toJSON(),
           $key: element.key,
        })
      )
      .sort((a, b) => a.$key - b.$key) // here you can sort by the $key or id or another variable
      

      【讨论】:

        猜你喜欢
        • 2017-04-19
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        • 2017-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-16
        相关资源
        最近更新 更多