0

我正在使用 Normalizr 从不同的 API 端点获得相同的响应形状。

const post = new Schema('posts');
const posts = arrayOf('post');

const listResponse = [
  {id: 1, text: 'post one'},
  {id: 2, text: 'post two'},
];
normalize(listResponse, posts);

/*  
{
  entities: {
    posts: {
      1: {id: 1, text: 'post one'},
      2: {id: 2, text: 'post two'}
    }
  },
  result: [1, 2]
}
*/


const singleResponse = {id: 1, text: 'post one'};
normalize(singleResponse, post);

/*
{
  entities: {
    posts: {
      1: {id: 1, text: 'post one'}
    }
  },
  result: 1
}
*/

然后我想处理标准化的反应,不管它是怎么来的。

但问题是,对于我得到的单个项目result: 1而不是数组result: [1],它会在我以后的代码中引起一些问题。

现在我必须result手动标准化为数组,但也许有更好的方法来做到这一点?

4

1 回答 1

6

在我的应用程序中,我针对这种情况使用了两种不同的操作,FETCH_POST并且FETCH_POSTS相应地。

但是如果你有一些问题,你可以使用一些小技巧:

const singleResponse = {id: 1, text: 'post one'};
normalize([singleResponse], posts);

当规范化单个帖子项目时,我们可以简单地将其包装为数组并将其规范化为帖子数组。

于 2016-08-08T13:27:59.257 回答