我正在尝试将一个用户反规范化为一个完整的对象。我正在尝试根据文档here进行跟踪。据我所知,输入应该是结果值之一,然后提供模式和实体来处理重建对象的过程。不过,返回值是一个键值为0且输入值为的对象。例如,{0:44},而不是整个反规范化的用户对象。
userSchemas.js
import { schema } from 'normalizr';
const photos = new schema.Entity('photos')
const phones = new schema.Entity('phones')
const user = new schema.Entity('users', {
photos: [photos],
phones: [phones]
})
const usersSchema = new schema.Array(users)
export { usersSchema, user as userSchema }去正规化
denormalize([user], userSchema, this.props.users.entities)this.props.users.entities
{
users : {
1: {id:1, name: "john", phones:[2]}
},
photos : {},
phones : {
2: {id:2, phone: "34234324"}
}
}编辑:可以粘贴到http://requirebin.com中的Gist,它在控制台中显示问题
var normalizr = require("normalizr")
const photos = new normalizr.schema.Entity('photos')
const phones = new normalizr.schema.Entity('phones')
const user = new normalizr.schema.Entity('user', {
photos: [photos],
phones: [phones]
})
const usersSchema = new normalizr.schema.Array(user)
var users = [
{id: 1, name: "bob", phones: [{id:3, phone: 45234324},{id:4, phone: 42342432}]},
{id: 2, name: "will", phones: [{id:3, phone: 45234324},{id:6, phone: 5435345}]},
{id: 4, name: "sam", phones: [{id:6, phone: 5345353},{id:7, phone: 42342432}]}
]
var normalizedUsers = normalizr.normalize(users, usersSchema)
var denormalizedUser = normalizr.denormalize([2], user, normalizedUsers)
console.log(denormalizedUser)发布于 2017-01-27 07:30:30
这一行是错误的:
var denormalizedUser = normalizr.denormalize([2], user, normalizedUsers)或者你的第一个参数应该是2,或者你的第二个参数应该是[ user ]。
编辑
此外,normalizedUsers应该只是entities,而不是完整的标准化结果。使用normalizedUsers.entities
https://stackoverflow.com/questions/41828649
复制相似问题