因此,当您请求一个资产时,端点会以类似的方式进行响应。Bios只是一个例子。
{
_embedded: {
bios: [
{
name: 'Blorp Gorp',
id: 256,
_links: {},
arrayCollection: [...],
objectCollection: [...],
...
},
...
],
_links: {},
}我想把它压平,我甚至不确定这是否有意义:
{
results: [256, 257],
entities: {
bios: {
256: {...},
257: {...}
},
arrayCollection: {
256: [...],
257: [...]
},
objectCollection: {
256: {...},
257: {...}
}
}
}但是,在它们到达实体之前,我无法让模式识别任何嵌套。如果我通过了normalize(camelizedJson.embedded.bios, bioSchema),它就能工作,但是如果我传递给它normalize(camelizedJson.embedded, bioSchema),我就不能让它意识到我想解析bios。
我想我可以将另一个变量传递到中间件中,该中间件为它提供了成功解析的嵌入式密钥。
发布于 2016-02-27 20:06:49
但是,在它们到达实体之前,我无法让模式识别任何嵌套。如果我通过了规范化(camelizedJson.embedded.bios,bioSchema),它就能工作,但是如果我传递它规范化(camelizedJson.embedded,bioSchema),我就不能让它意识到我想解析bios。
您可能需要的是normalize(camelizedJson.embedded, { bios: bioSchema })。模式可以嵌套在普通的JavaScript对象中,例如:
normalize(camelizedJson.embedded, {
bios: bioSchema,
lols: lolSchema,
wow: arrayOf({
wat: {
ugh: ughSchema
}
})
})发布于 2016-02-26 18:56:02
我相信您需要创建一个模式来定义"MyArrayThing“和"MyObjectThing”(这里是假名称),然后在"Bio“模式定义中,使用Normalizr的arrayOf(SomeSchemaObject)函数定义"arrayCollection”和"objectCollection“子字段。然后,一旦定义了单个Bio对象的样子,解析命令也需要看起来大致类似于normalize(camelizedJson.embedded.bios, arrayOf(Bio))。
https://stackoverflow.com/questions/35658888
复制相似问题