5

我刚刚开始使用带有 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({
  ...
});

但在这种简单的情况下无法弄清楚需要去那里

4

1 回答 1

7

您不必定义文章。确保您已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'}
    }
  }
}
于 2016-03-07T20:41:13.833 回答