0

因此,当您请求资产时,端点会以类似的方式响应。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.

我想我可以将另一个变量传递给中间件,为其提供成功解析的嵌入式密钥。

4

2 回答 2

2

但是我无法让模式在它们击中实体之前识别任何嵌套。如果我通过 normalize(camelizedJson.embedded.bios, bioSchema),它可以工作,但是如果我通过它 normalize(camelizedJson.embedded, bioSchema) 我无法让它意识到我想解析 bios。

你可能想要normalize(camelizedJson.embedded, { bios: bioSchema })。Schema 可以嵌套在纯 JavaScript 对象中,例如:

normalize(camelizedJson.embedded, {
  bios: bioSchema,
  lols: lolSchema,
  wow: arrayOf({
    wat: {
      ugh: ughSchema
    }
  })
})
于 2016-02-27T20:06:49.453 回答
0

我相信您需要创建一个定义(此处为说明的假名称)“MyArrayThing”和“MyObjectThing”的架构,然后在“Bio”架构定义中,使用 Normalizr 的arrayOf(SomeSchemaObject)函数定义“arrayCollection”和“objectCollection”子字段。然后,一旦您定义了单个 Bio 对象的外观,您的解析命令也需要大致看起来像normalize(camelizedJson.embedded.bios, arrayOf(Bio)).

于 2016-02-26T18:56:02.980 回答