问题标签 [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.
redux - 我应该如何在 Redux 中深度复制状态数据?
我有几个状态实例,我需要支持复制某些状态片段的操作。例如,我的产品是一个调查生成器,所以当我复制一个问题时,我也想复制它的答案,而不是让多个问题指向相同的答案实例。
状态被标准化:
在调度 QUESTION_DUPLICATE 的操作时,我还想复制任何答案。目前,我的 QUESTION_DUPLICATE 操作创建者还创建了一个新答案键的映射列表,然后答案缩减器使用它。
这种模式对我来说似乎很笨拙,尤其是在考虑更深层次的重复的可能性时(例如,复制一个包含问题的页面,其中包含答案......)。是否有更好的模式来深度复制标准化数据?
javascript - 使用 Normalizr 的双向链接
我有一个从 API 获得的区域列表。在此列表中,有多个建筑物。这在 JS 中看起来像这样:
现在我想使用 normalizr 规范化这个 JS 对象。我稍后要做的是从建筑物中获取该区域。
所以我尝试执行以下操作:
这确实使我的对象标准化, normalizedData 是这样的:
但是要获得建筑物的区域,我需要遍历每个区域并检查该建筑物是否包含在列表中。我不会通过标准化获得任何附加值。
如果我能够双向链接,那将是完美的。每个区域实体都有一个建筑指南列表,每个建筑都有一个区域指南。
有什么方法可以在 normalizr 中存档吗?最好的方法是什么?
谢谢您的帮助。
normalizr - 尝试使用 idAttribute 生成 id 时,非规范化失败
我正在使用以下架构:
我的数据在音频剪辑部分使用相同的 id,我不想合并。因为它们最终将包含唯一的数据。规范化部分按预期工作,但是当我尝试将数据反规范化时,它失败并出现以下错误:
请帮助将数据反规范化。
我在这个阶段所做的就是:
我也可以按需提供输入数据,它有点大。
reactjs - Normalizr - 如何处理已经规范化的嵌套实体
我有非常嵌套的 JSON 中的实体,它们已经遵循 normalizr 格式,其中 idAttribute 已经是定义对象的键:
在此示例中,请注意该families
属性使用 id ( smiths
, jones
) 来标识people
谁是具有 id 的对象数组。
此模式可能如下所示:
问题:有没有办法指定模式的 idAttribute 是定义它的关键?换句话说,我将如何定义与andFamily
相关的架构?groups
people
另一个问题,有没有办法达到denormalize
扁平状态,以便家庭families: {[id]: obj}
模式与上面的示例 json 中的模式保持一致?
javascript - Normalizr:通过类型而不是模式来识别多态映射的实体
对于多态模式,例如Normalizr 中的Union,对于模式定义和数据:
标准化数据采用以下形式:
实体以模式键为键,在本例中为users
,但结果对象仅包含 UnionSchema 定义中模式的键。这会使以后在没有完全非规范化的情况下很难匹配元素。
有没有更好的方法来使用 normalizr 规范化这些数据,以便更容易entities
从 result
就我的目的而言,理想情况下,数据可以通过以下方式标准化:
至
请注意,类型与实体键匹配(这很简单),结果中的键名是type
(如果您想使用更复杂的数据来做这件事,那就更麻烦了)。我怀疑这种规范化会使非规范化变得更加困难,但我只对规范化感兴趣。
javascript - 如何过滤没有数组的规范化嵌套 JSON 数据?
使用normalizr
库后,我的应用程序的 Redux 状态中有以下标准化 JSON 对象结果:
我想要实现的目标:我想要一个按 .competitions
过滤/分类的列表sports
。
我怎样才能做到这一点?
我也希望能够competitions
按它的status.is_live
.
那么我怎样才能得到一个等于真和等于假的细分列表呢competitions
?sport
status.is_live
competitions
status.is_live
任何帮助表示赞赏!谢谢
redux - 在 processStrategy 或 idAttribute 方法中判断模式是被规范化还是非规范化的方法
是否可以判断一个模式是否被用于非规范化数据,或者它是否被用于从模式定义的processStrategy
和方法中规范化数据?idAttribute
稍后确定这一点很容易,但我很好奇这些方法是否可行。这将允许我使用相同的模式进行规范化/非规范化,而不是为每个进程创建一个新模式,如解决方案here中所述。
redux - Normalizr - 在结果中设置嵌套响应的键
我在规范化器示例中看到他们在结果对象上返回了一个名称属性“用户”:
我似乎无法弄清楚如何使用我得到的嵌套 api 响应来做到这一点。我有一个用户和一个地址缩减器,我试图将标准化响应的结果传递给它们。
我有一个如下所示的 JSON 响应:
我的架构如下所示:
做:let result = normalize(data, schema.arrayOfUseres)
返回:
我真正想要的是同时包含用户和地址的结果对象:
这可能吗?我尝试了几种变体
但这只是出错并将我的数据返回到结果对象中。
javascript - 获取嵌套模式上定义的唯一实体键列表
我正在尝试获取在 normalizr 模式上定义的所有键的列表,并编写了一个函数来满足我对简单模式的需求:
但是,这在嵌套模式定义上失败并出现Maximum call stack size exceeded
错误,如以下测试用例所示:
如果有人对如何收集已经访问过的模式以使递归函数停止有想法,他们将不胜感激。