用normalizr规范化简单数组

时间:2016-03-07 20:01:02

标签: redux normalizr

我刚刚开始使用带有Redux的normalizr而且我一直困在看起来像是一个简单的问题,但我可能做错了。所以我想像这样规范化一个数组:

{
  articles: [
    {id: 1, someValue: 'test'},
    {id: 2, someValue: 'test2'}
  ]
}

进入这样的结构:

{
  result: {
    articles: [1,2]
  },
  entities: {
    articles: {
      1: {someValue: 'test'},
      2: {someValue: 'test2'}
    }
  }
}

我试过这样做:

const article = new Schema('articles');
responce = normalize(responce, {
  articles: arrayOf(article)
});

但是这给了我一个看起来像这样的结构:

{
  articles: {
    entities: {},
    result: {
      0: {someValue: 'test'},
      1: {someValue: 'test2'}
    }
  }
}

现在没有文章ID数组。我假设我在这里遗漏了一些东西:

article.define({
  ...
});

但在这个简单的案例中无法确定需要去哪里

1 个答案:

答案 0 :(得分:2)

您不必定义文章。确保您已正确导入normalizr的所有内容。我尝试了你的代码,它给了我预期的结果:

import { normalize, Schema } from 'normalizr';

let response = {
  articles: [
    { id: 1, someValue: 'test' },
    { id: 2, someValue: 'test2' }
  ]
};

const article = new Schema('articles');

response = normalize(response, {
  articles: [article]
});

console.log(response);

输出:

{
  result: {
    articles: [1,2]
  },
  entities: {
    articles: {
      1: {someValue: 'test'},
      2: {someValue: 'test2'}
    }
  }
}