使用 normalizr 标准化 api 响应
Normalize api response with normalizr
因此,当您请求资产时,端点会以类似这样的方式进行响应。 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
.
我想我可以将另一个变量传递给中间件,为它提供成功解析的嵌入式密钥。
我认为您需要创建一个架构来定义(此处为示例的假名称)"MyArrayThing" 和 "MyObjectThing",然后在 "Bio" 架构定义中,定义 "arrayCollection" 和 "objectCollection" 子字段使用 Normalizr 的 arrayOf(SomeSchemaObject)
函数。然后,一旦您定义了单个 Bio 对象的外观,您的解析命令也需要大致类似于 normalize(camelizedJson.embedded.bios, arrayOf(Bio))
.
But I can't get the Schemas to recognize any nesting before they hit their entity. if I pass normalize(camelizedJson.embedded.bios, bioSchema), it works, but if I pass it normalize(camelizedJson.embedded, bioSchema) I can't get it realize I want to parse the bios.
您可能需要 normalize(camelizedJson.embedded, { bios: bioSchema })
。模式可以嵌套在普通 JavaScript 对象中,例如:
normalize(camelizedJson.embedded, {
bios: bioSchema,
lols: lolSchema,
wow: arrayOf({
wat: {
ugh: ughSchema
}
})
})
因此,当您请求资产时,端点会以类似这样的方式进行响应。 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
.
我想我可以将另一个变量传递给中间件,为它提供成功解析的嵌入式密钥。
我认为您需要创建一个架构来定义(此处为示例的假名称)"MyArrayThing" 和 "MyObjectThing",然后在 "Bio" 架构定义中,定义 "arrayCollection" 和 "objectCollection" 子字段使用 Normalizr 的 arrayOf(SomeSchemaObject)
函数。然后,一旦您定义了单个 Bio 对象的外观,您的解析命令也需要大致类似于 normalize(camelizedJson.embedded.bios, arrayOf(Bio))
.
But I can't get the Schemas to recognize any nesting before they hit their entity. if I pass normalize(camelizedJson.embedded.bios, bioSchema), it works, but if I pass it normalize(camelizedJson.embedded, bioSchema) I can't get it realize I want to parse the bios.
您可能需要 normalize(camelizedJson.embedded, { bios: bioSchema })
。模式可以嵌套在普通 JavaScript 对象中,例如:
normalize(camelizedJson.embedded, {
bios: bioSchema,
lols: lolSchema,
wow: arrayOf({
wat: {
ugh: ughSchema
}
})
})