gpt4 book ai didi

normalizr - 反规范化逆向过程策略

转载 作者:行者123 更新时间:2023-12-04 16:04:09 25 4
gpt4 key购买 nike

我有一个 API,它使用 fields 属性中的属性提供这样的数据。

{
records: [
{
id: "123",
fields: {
author: {
id: "1",
name: "Paul"
},
title: "My awesome blog post",
comments: [
{
id: "324",
commenter: {
id: "2",
name: "Nicole"
}
}
]
}
}
]
};

在规范化时,我现在用一个简单的 processStrategy: (input, parent, key) => input.fields 来处理这个问题。但我想再次非规范化,以便非规范化实体包含此字段结构,因为 API 期望它以这种方式。

到目前为止,使用 const denormalizedData = denormalize([123], [article], normalizedData.entities) 对我的规范化数据进行非规范化处理省略字段:
[
{
"author": {
"id": "1",
"name": "Paul"
},
"title": "My awesome blog post",
"comments": [
{
"id": "324",
"commenter": {
"id": "2",
"name": "Nicole"
}
}
]
}
]

我在 api docs 中找不到任何内容关于如何在非规范化中添加额外的处理,知道吗?

最佳答案

因为 processStrategy用于规范化过程中的数据预处理,不会在非规范化过程中执行。对于您的用例,我不会使用此功能,而是简单地按如下方式构建您的架构:

const { schema, denormalize, normalize } = normalizr;
const user = new schema.Entity("users");
const comment = new schema.Entity("comments", { commenter: user });
const commentList = [comment];
const post = new schema.Entity("posts", {
fields: { author: user, comments: commentList }
});
const postList = [post];
const mockApiResponse = {
records: [
{
id: "123",
fields: {
author: {
id: "1",
name: "Paul"
},
title: "My awesome blog post",
comments: [
{
id: "324",
commenter: {
id: "2",
name: "Nicole"
}
}
]
}
}
]
};

const normalizedResponse = normalize(mockApiResponse.records, postList);
const denormalizedResponse = denormalize(
normalizedResponse.result,
postList,
normalizedResponse.entities
);

console.log("normalizedResponse", normalizedResponse);
console.log("denormalizedResponse", denormalizedResponse);

这会给你你正在寻找的结果。如果出于某种原因,您需要坚持当前的实现,我建议您在将请求发送回服务器之前对其进行转换。例如, axios用他们的 transformRequest 解决了这个问题特征。

关于normalizr - 反规范化逆向过程策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53704982/

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