gpt4 book ai didi

javascript - Normalizr - 未达到预期结果

转载 作者:行者123 更新时间:2023-11-30 09:52:53 26 4
gpt4 key购买 nike

import { normalize, Schema, arrayOf } from 'normalizr';

var ListA = [
{
id:1,
text: "text1",
comments : [
{
id: 232,
text: "asfasd"
},
{
id: 333,
text: "abcsss"
}
]
},
{id:2, text:"text2", comments:[]},
{id:3, text:"text3", comments:[]}
]

我正在尝试使这个简单的响应正常化。我不确定我在做什么有什么问题,或者我没有理解 normalizr 文档。

const post = new Schema('posts');
// const comment = new Schema('comments');
// const collection = new Schema('collections');

// post.define({
// comments : comment,
// collections : arrayOf(collection)
// });
ListA = normalize(ListA, {
posts: arrayOf(post)
});

console.log(ListA);

这只会对“结果”对象产生相同的响应,而实体对象是空的。有人可以帮帮我吗。首先,我试图仅对帖子进行规范化,然后再对帖子进行规范化。但我无法跨过第一步。

最佳答案

使用normalizr的几个例子

1) 归一化简单对象
举个例子

import { Schema, arrayOf } from 'normalizr';
const postSchema = new Schema('posts');

// simple post object
var post = {
id:1,
title: "some title"
};

console.log(normalize(post, postSchema));

结果会是

{
"entities":{
"posts":{
"1":{
"id":1,
"title":"some title"
}
}
},
"result":1
}

2) 标准化对象数组

import { Schema, arrayOf } from 'normalizr';
const postSchema = new Schema('posts');

// array of posts
var posts = [
{
id:1,
title: "foo"
},
{
id:2,
title: "far"
},
{
id:3,
title: "baz"
}
];

console.log(normalize(posts, arrayOf(postSchema)));

结果会是

{
"entities":{
"posts":{
"1":{
"id":1,
"title":"foo"
},
"2":{
"id":2,
"title":"far"
},
"3":{
"id":3,
"title":"baz"
}
}
},
"result":[
1,
2,
3
]
}

3) 规范化复杂对象

const postSchema = new Schema('posts');
const authorSchema = new Schema('authors');
const commentSchema = new Schema('comments');

postSchema.define({
author: authorSchema,
comments: arrayOf(commentSchema)
});

// complex post object
var post = {
id:1,
title: "foo",
author: {
id: 201,
name: "Bar Baz"
},
comments: [
{
id: 1002,
body: "Some content"
},
{
id: 1003,
body: "Some content 1003"
},
{
id: 1004,
body: "Some content 1004"
}
]
};

console.log(normalize(post, postSchema));

结果会是

{
"entities":{
"posts":{
"1":{
"id":1,
"title":"foo",
"author":201,
"comments":[
1002,
1003,
1004
]
}
},
"authors":{
"201":{
"id":201,
"name":"Bar Baz"
}
},
"comments":{
"1002":{
"id":1002,
"body":"Some content"
},
"1003":{
"id":1003,
"body":"Some content 1003"
},
"1004":{
"id":1004,
"body":"Some content 1004"
}
}
},
"result":1
}

所以你可以试试

ListA = normalize(ListA, arrayOf(post));

代替

 ListA = normalize(ListA, {
posts: arrayOf(post)
});

关于javascript - Normalizr - 未达到预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35470393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com