首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用新的Normalizr 3.1.0解除实体的规范化

无法使用新的Normalizr 3.1.0解除实体的规范化
EN

Stack Overflow用户
提问于 2017-01-24 20:49:15
回答 1查看 1.7K关注 0票数 1

我正在尝试将一个用户反规范化为一个完整的对象。我正在尝试根据文档here进行跟踪。据我所知,输入应该是结果值之一,然后提供模式和实体来处理重建对象的过程。不过,返回值是一个键值为0且输入值为的对象。例如,{0:44},而不是整个反规范化的用户对象。

userSchemas.js

代码语言:javascript
复制
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 }

去正规化

代码语言:javascript
复制
denormalize([user], userSchema, this.props.users.entities)

this.props.users.entities

代码语言:javascript
复制
{
users : { 
         1: {id:1, name: "john", phones:[2]}
        },
photos : {},
phones : {
          2: {id:2, phone: "34234324"}
         }
}

编辑:可以粘贴到http://requirebin.com中的Gist,它在控制台中显示问题

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-27 07:30:30

这一行是错误的:

代码语言:javascript
复制
var denormalizedUser = normalizr.denormalize([2], user, normalizedUsers)

或者你的第一个参数应该是2,或者你的第二个参数应该是[ user ]

编辑

此外,normalizedUsers应该只是entities,而不是完整的标准化结果。使用normalizedUsers.entities

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41828649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档