【问题标题】:Make an Behaviorsubject for nested serializer's data为嵌套序列化程序的数据创建一个 Behaviorsubject
【发布时间】:2020-09-03 10:05:09
【问题描述】:

我尝试制作文章应用。

基于角度和离子,但我面临的问题是序列化器嵌套数据的 Behaviorsubject 的编程结构。 我的后端使用 django-rest-framework

*我使用基本数据成功执行“CRUD”操作(即来自服务器和行为主体的实时更新)仅使用作者数据或文章数据但嵌套序列化数据失败 *

All I want the best practice of behavior subject for the nested data of authors and article

问题。)为一个 URL 创建一个 Behaviorsubject http:本地主机:8000/v1/authors/ 它使用嵌套序列化程序并返回作者和文章数据 下图 ?

下图显示了第二个模型的作者数组数据 文章数据嵌套 (提前致谢)

[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

【问题讨论】:

  • 你想使用 BehaviourSubject 来传递数据吗?
  • 提供您已完成的“CRUD”操作的代码
  • 兄弟,我按照你的要求用我的“代码”更新了帖子,很高兴你能帮助我:)
  • 您想将嵌套数据发布到后端还是读取嵌套数据?我很难理解你的问题。
  • 我通过创建一个 BehaviorSubject 对“CRUD”操作感到满意,但这次我如何处理来自具有两个模型文章和作者的服务器的 嵌套数据,如图所示图片。 问题 - 我怎样才能使 service.tsBehavior Subject结构 (*我应该根据来自后端的数据,制作两个服务文件或两个 BehaviorSubject 一个用于文章,一个用于作者)。这里的目标是不要向服务器发送请求以获取可以缓存的数据。 如何正确处理或缓存嵌套数据以便重复使用。

标签: angular django-rest-framework django-serializer behaviorsubject rxjs-observables


【解决方案1】:

您应该在 Author 模型中包含 Article

export interface Article {
  // fields for articles
}

export interface Author {
  // fields for autor
  articles: Article[]
}

这将确保您从authors 端点获取的数据将与Author 模型相匹配,而articles 端点使用Article 模型。

不需要拆分来自authors端点的数据。

如果需要列出所有文章而不考虑作者,则创建一个返回所有文章的新 url 并为此使用 Article 模型。

【讨论】:

  • 我想错了吗?如果整个文章数据已经来自作者数据,那么为什么我们为文章部分调用 api ,只需使用 behaviorsubject 来存储它并在每次需要时调用它----------- -------------------------------------------------- ------------ 我成功检索到作者的数据
  • 如果文章数据属于作者,则无需分隔。
  • 感谢您的回复,任何显示嵌套数据调用的博客或示例都使用适当的 Observable 进行缓存?
  • 实际上,我必须调用两个 api,一个用于 articles/,第二个用于 authors/ 但我认为使用一次调用所有数据真正的嵌套序列化器 并存储它供以后使用,无需调用aritlces数据。 ** 我认为这是一个错误 **
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 2019-10-06
相关资源
最近更新 更多