对标准化数据进行排序的最佳方法是啥?

Posted

技术标签:

【中文标题】对标准化数据进行排序的最佳方法是啥?【英文标题】:What is the best way to sort normalized data?对标准化数据进行排序的最佳方法是什么? 【发布时间】:2019-08-17 04:15:00 【问题描述】:

例如我有来自服务器的数据

[id: 1, pinned: true, date: 14.03.2019 ... , 
 id: 8, pinned: true, date: 20.02.2019 ...,
 id: 2, pinned: false, date: 26.03.2019 ...,
 id: 21, pinned: false, date: 25.03.2019 ..., ...];

此数据已按日期排序,但固定项目始终位于顶部。

使用 normalizr.js 规范化数据后,我将拥有我的实体对象和 ids 数组,例如:

entities:  1:[id: 1, pinned: true, ... , 8:  id: 2, pinned: true, ..., ...,
ids: [1, 8, 2, 21 ...];

我会将它存储在不同的减速器中。

渲染我使用的这些数据:

const List = (props) => 
  return (
    <ul>
      props.ids.map(id =>
        <Item id=id key=id />
      )
    </ul>
  )

connect((state) =>  ids: state.ids )(Item);

const Item = (props) => (
  <li>props.contact.id</li>
);

connect((state, ownProps) =>  contact: state.entities[ownProps.id] )(Item)

但是如果我从服务器上得到类似的物品呢

id: 30, pinned: false, date: 27.03.2019 ...

此项目应该在列表中的第一个,但在固定项目之后。

如何对 ids reducer 进行排序?

我想到的是非规范化数据对其进行排序并再次规范化。但这感觉“不对”。

也许有没有非规范化的方法?或者针对这种情况的另一种最佳方法。

感谢大家的帮助!

【问题讨论】:

【参考方案1】:

似乎顺序保留在结果属性中,而不是实体中。

看一看:https://github.com/paularmstrong/normalizr/issues/9

【讨论】:

以上是关于对标准化数据进行排序的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 匹配词组和排序相关性的最佳方法

在 Drupal 中创建基于标准的、跨浏览器兼容的圆角的最佳方法是啥?

如何将 csv 文件中的数据排序为标准化输出,同时读取标题以对数据进行排序

以二进制模式写入标准输出的最简单方法是啥?

局部加权回归法是啥

toString 实现的最佳标准样式是啥? [关闭]