问题标签 [normalizr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
251 浏览

redux - 我应该如何在 Redux 中深度复制状态数据?

我有几个状态实例,我需要支持复制某些状态片段的操作。例如,我的产品是一个调查生成器,所以当我复制一个问题时,我也想复制它的答案,而不是让多个问题指向相同的答案实例。

状态被标准化:

在调度 QUESTION_DUPLICATE 的操作时,我还想复制任何答案。目前,我的 QUESTION_DUPLICATE 操作创建者还创建了一个新答案键的映射列表,然后答案缩减器使用它。

这种模式对我来说似乎很笨拙,尤其是在考虑更深层次的重复的可能性时(例如,复制一个包含问题的页面,其中包含答案......)。是否有更好的模式来深度复制标准化数据?

0 投票
1 回答
130 浏览

javascript - 使用 Normalizr 的双向链接

我有一个从 API 获得的区域列表。在此列表中,有多个建筑物。这在 JS 中看起来像这样:

现在我想使用 normalizr 规范化这个 JS 对象。我稍后要做的是从建筑物中获取该区域。

所以我尝试执行以下操作:

这确实使我的对象标准化, normalizedData 是这样的:

但是要获得建筑物的区域,我需要遍历每个区域并检查该建筑物是否包含在列表中。我不会通过标准化获得任何附加值。

如果我能够双向链接,那将是完美的。每个区域实体都有一个建筑指南列表,每个建筑都有一个区域指南。

有什么方法可以在 normalizr 中存档吗?最好的方法是什么?

谢谢您的帮助。

0 投票
1 回答
266 浏览

normalizr - 尝试使用 idAttribute 生成 id 时,非规范化失败

我正在使用以下架构:

我的数据在音频剪辑部分使用相同的 id,我不想合并。因为它们最终将包含唯一的数据。规范化部分按预期工作,但是当我尝试将数据反规范化时,它失败并出现以下错误:

请帮助将数据反规范化。

我在这个阶段所做的就是:

我也可以按需提供输入数据,它有点大。

0 投票
1 回答
1749 浏览

reactjs - Normalizr - 如何处理已经规范化的嵌套实体

我有非常嵌套的 JSON 中的实体,它们已经遵循 normalizr 格式,其中 idAttribute 已经是定义对象的键:

在此示例中,请注意该families属性使用 id ( smiths, jones) 来标识people谁是具有 id 的对象数组。

此模式可能如下所示:

问题:有没有办法指定模式的 idAttribute 是定义它的关键?换句话说,我将如何定义与andFamily相关的架构?groupspeople

另一个问题,有没有办法达到denormalize扁平状态,以便家庭families: {[id]: obj}模式与上面的示例 json 中的模式保持一致?

0 投票
1 回答
751 浏览

javascript - Normalizr:通过类型而不是模式来识别多态映射的实体

对于多态模式,例如Normalizr 中的Union,对于模式定义和数据:

标准化数据采用以下形式:

实体以模式键为键,在本例中为users,但结果对象仅包含 UnionSchema 定义中模式的键。这会使以后在没有完全非规范化的情况下很难匹配元素。

有没有更好的方法来使用 normalizr 规范化这些数据,以便更容易entitiesresult就我的目的而言,理想情况下,数据可以通过以下方式标准化:

请注意,类型与实体键匹配(这很简单),结果中的键名是type(如果您想使用更复杂的数据来做这件事,那就更麻烦了)。我怀疑这种规范化会使非规范化变得更加困难,但我只对规范化感兴趣。

0 投票
1 回答
102 浏览

json - 用于规范化 JSON 的正确规范化器语法

我正在尝试使用normalizer规范化一些 JSON。我的 JSON 看起来像

从示例中,我认为这可能有效

但是我最终得到了一个未定义的结果,并且该未定义的值中有一些时髦的东西。

在此处输入图像描述

我究竟做错了什么?

0 投票
1 回答
641 浏览

javascript - 如何过滤没有数组的规范化嵌套 JSON 数据?

使用normalizr库后,我的应用程序的 Redux 状态中有以下标准化 JSON 对象结果:

我想要实现的目标:我想要一个按 .competitions过滤/分类的列表sports

我怎样才能做到这一点?

我也希望能够competitions按它的status.is_live.

那么我怎样才能得到一个等于真和等于假的细分列表呢competitionssportstatus.is_livecompetitions status.is_live

任何帮助表示赞赏!谢谢

0 投票
1 回答
73 浏览

redux - 在 processStrategy 或 idAttribute 方法中判断模式是被规范化还是非规范化的方法

是否可以判断一个模式是否被用于非规范化数据,或者它是否被用于从模式定义的processStrategy和方法中规范化数据?idAttribute

稍后确定这一点很容易,但我很好奇这些方法是否可行。这将允许我使用相同的模式进行规范化/非规范化,而不是为每个进程创建一个新模式,如解决方案here中所述。

0 投票
1 回答
1194 浏览

redux - Normalizr - 在结果中设置嵌套响应的键

我在规范化器示例中看到他们在结果对象上返回了一个名称属性“用户”:

我似乎无法弄清楚如何使用我得到的嵌套 api 响应来做到这一点。我有一个用户和一个地址缩减器,我试图将标准化响应的结果传递给它们。

我有一个如下所示的 JSON 响应:

我的架构如下所示:

做:let result = normalize(data, schema.arrayOfUseres) 返回:

我真正想要的是同时包含用户和地址的结果对象:

这可能吗?我尝试了几种变体

但这只是出错并将我的数据返回到结果对象中。

0 投票
1 回答
63 浏览

javascript - 获取嵌套模式上定义的唯一实体键列表

我正在尝试获取在 normalizr 模式上定义的所有键的列表,并编写了一个函数来满足我对简单模式的需求:

但是,这在嵌套模式定义上失败并出现Maximum call stack size exceeded错误,如以下测试用例所示:

如果有人对如何收集已经访问过的模式以使递归函数停止有想法,他们将不胜感激。