为嵌套序列化程序的数据创建一个 Behaviorsubject
Make an Behaviorsubject for nested serializer's data
我试着做一个文章应用。
基于 angular 和 ionic 但我面临的问题是 Behaviorsubject 的编程结构用于序列化器嵌套数据。
我的后端使用 django-rest-framework
*我使用基本数据成功执行了 "CRUD" 操作 (即来自服务器和行为主题的实时更新)仅使用作者数据或文章数据 但嵌套序列化数据失败 *
作者和文章嵌套数据行为主体最佳实践我要
问题。)为一个 URL 创建一个 Behaviorsubject
http:本地 host:8000/v1/authors/
其中使用 嵌套序列化器 和 returns 作者和文章数据
下图 ?
下图显示嵌套的第二个模型的作者数组数据和 文章数据
(提前致谢)
[1]:
我的代码articles.service.ts
extractArticles(data : AuthorsInterface[]){
/*
* Extracting then Returns
* [] of Articles Data
* from Parent Data
*/
let localArray = []
if (data.length > 0){
for( let x in data ){
if ( data[x].articles.length > 0 ){
for( let y in data[x].articles){
localArray.push(data[x].articles[y])
}
}
}
return this.articlesInterface.concat(localArray)
}
}
getParents() {
/*
* Calling REST-API
* Extract Authors & Articles
* from the parent Data
* & cached them
*/
return this.http.get<AuthorsInterface[]>(this.AUTHOR_URL)
.pipe(
map(mapData=>{
**here comes the combined data of articles and authors **
*as shown in image*
this.articlesBehavior.next(
this.extractArticles(mapData)
)
}
)
)
我做得对吗?
*现在我只是在从后端接收数据后拆分数据
(通过从作者字典中提取文章数据)
并单独存储
*articlesInterface 用于保存所有文章
用于保存所有作者的 authorsInterface
然后将文章的服务注入作者的服务不知道这是不是最佳实践?
我做了两个BehaviorSubject
您应该在 Author
模型中包含 Article
:
export interface Article {
// fields for articles
}
export interface Author {
// fields for autor
articles: Article[]
}
这将确保您从 authors
端点获取的数据将与 Author
模型匹配,并且对于 articles
端点使用 Article
模型。
不需要拆分来自 authors
端点的数据。
如果需要列出所有文章而不考虑作者,则创建一个新的 url 其中 returns 所有文章并为此使用 Article
模型。
我试着做一个文章应用。
基于 angular 和 ionic 但我面临的问题是 Behaviorsubject 的编程结构用于序列化器嵌套数据。 我的后端使用 django-rest-framework
*我使用基本数据成功执行了 "CRUD" 操作 (即来自服务器和行为主题的实时更新)仅使用作者数据或文章数据 但嵌套序列化数据失败 *
作者和文章嵌套数据行为主体最佳实践我要
问题。)为一个 URL 创建一个 Behaviorsubject http:本地 host:8000/v1/authors/ 其中使用 嵌套序列化器 和 returns 作者和文章数据 下图 ?
下图显示嵌套的第二个模型的作者数组数据和 文章数据 (提前致谢)
[1]:
我的代码articles.service.ts
extractArticles(data : AuthorsInterface[]){
/*
* Extracting then Returns
* [] of Articles Data
* from Parent Data
*/
let localArray = []
if (data.length > 0){
for( let x in data ){
if ( data[x].articles.length > 0 ){
for( let y in data[x].articles){
localArray.push(data[x].articles[y])
}
}
}
return this.articlesInterface.concat(localArray)
}
}
getParents() {
/*
* Calling REST-API
* Extract Authors & Articles
* from the parent Data
* & cached them
*/
return this.http.get<AuthorsInterface[]>(this.AUTHOR_URL)
.pipe(
map(mapData=>{
**here comes the combined data of articles and authors **
*as shown in image*
this.articlesBehavior.next(
this.extractArticles(mapData)
)
}
)
)
我做得对吗?
*现在我只是在从后端接收数据后拆分数据 (通过从作者字典中提取文章数据) 并单独存储
*articlesInterface 用于保存所有文章 用于保存所有作者的 authorsInterface
然后将文章的服务注入作者的服务不知道这是不是最佳实践?
我做了两个BehaviorSubject
您应该在 Author
模型中包含 Article
:
export interface Article {
// fields for articles
}
export interface Author {
// fields for autor
articles: Article[]
}
这将确保您从 authors
端点获取的数据将与 Author
模型匹配,并且对于 articles
端点使用 Article
模型。
不需要拆分来自 authors
端点的数据。
如果需要列出所有文章而不考虑作者,则创建一个新的 url 其中 returns 所有文章并为此使用 Article
模型。