gpt4 book ai didi

javascript - 将架构从 Normalizr v2 转换为 v3 时遇到问题

转载 作者:行者123 更新时间:2023-12-01 04:06:52 24 4
gpt4 key购买 nike

我刚刚更新到 normalizr 版本 3.1.x,这样我就可以利用非规范化。尽管他们已经显着改变了他们的 API。我在传输架构时遇到问题。

import { normalize, Schema, arrayOf, valuesOf } from 'normalizr';

const usersSchema = new Schema('users')
const photosSchema = new Schema('photos')
const phonesSchema = new Schema('phones')

photosSchema.define({
users: arrayOf(usersSchema)
})

phonesSchema.define({
users: arrayOf(usersSchema)
})

usersSchema.define({
photos: valuesOf(photosSchema),
phones: valuesOf(phonesSchema)
})

这是我现有的用户架构。我还使用了redux-normalizr middleware在我的 redux 操作中,因此我将架构连接到我的操作,如下所示:

import { usersSchema } from '../normalizrSchemas/usersSchemas.js'
import { arrayOf } from 'normalizr'

export function getUsers(data) {
return {
type: 'GET_USERS',
payload: data,
meta: {
schema : arrayOf(usersSchema)
}
}
}

这是我第一次尝试转换架构。您似乎无法像使用 arrayOf 一样调用 schema.Array,因此我认为我需要将数组调用移至架构中。

import { schema } from 'normalizr';

const photos = new schema.Entity('photos')
const phones = new schema.Entity('phones')
const user = new schema.Entity('user', {
photos: [photos],
phones: [phones]
})

const users= new schema.Array('users', user)

export { users }

操作是相同的,但我已经删除了将架构包装在 arrayOf 中。所有用户数据都只是在没有任何标准化的情况下转储到结果中。数据是用户对象的列表,每个对象都包含一个 id,normalizr 应该拾取该 id。我正在努力弄清楚如何获得标准化,以识别它是我认为的对象数组。

最佳答案

schema.Array 不接受键字符串名称 ( docs )。第一个参数应该是模式定义。所以而不是

const users= new schema.Array('users', user)

您应该使用:

const users = new schema.Array(user)

或者,您可以只使用单个实体类型数组的简写:

const users = [ user ];

关于javascript - 将架构从 Normalizr v2 转换为 v3 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41747695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com