首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证各种API调用的成功或失败角9,DjangoREST

验证各种API调用的成功或失败角9,DjangoREST
EN

Stack Overflow用户
提问于 2020-03-11 22:52:10
回答 1查看 43关注 0票数 0

首先,我编写了一个类似于Google表单的“表单生成器”,用于运行多种类型调查的公司内部,这些调查都是问题/回答格式的。DB设计在功能上非常类似于

(取自Database design for a survey)

后端是用Python编写的,使用Django和Django Rest框架,前端是角9。有些问题比Google表单允许的更复杂,例如,有些问题允许多个答案,某些答案与它们有“次要问题”相关联,其他问题依赖于某些答案(即,如果不选择某个答案,则必须禁用一些问题)

由于数据库的复杂性,而且主要是由于我普遍缺乏经验,我的前端解决方案往往能够发布到API中,对我来说似乎很麻烦。插入逻辑如下:

created

  • Survey_Question survey)

  • Depending创建了一个或多个Survey_Question_Answers (OfferedAnswer也是从特殊模板中提取的)

在我的设计中不使用Person表和应答表。

用角度编码的方法的基本思想如下:

代码语言:javascript
复制
this.createSurvey().subscribe(survey => {
    this.questions.forEach(question => {
        question.survey = survey
        this.createQuestion(question).subscribe(newQuestion => {
            // same logic with answers that belong to this question
        })
    )}
})

这是插入逻辑的基本要点。由于我正在学习我的代码过程,在这一点上,我已经开始相信,不推荐以这种方式嵌套订阅,尽管我已经将它们提取到了防止可视化“回调地狱”的方法中。虽然功能强大,但我现在面临的问题是,在通过POST成功创建每个问题之后,如何向用户发出单个“成功保存的表单”消息,因为在使用异步调用时没有特定的序列(据我理解)。

有人能为我指出正确的方向吗?在哪里阅读或属于RXJS的操作符是否适合这些类型的任务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-12 01:01:02

通过在这里使用switchMap链接避免回调地狱,并并行地forkJoin所有创建问题请求

代码语言:javascript
复制
this.createSurvey().pipe(switchMap(survey=>
 forkJoin(this.questions.map(question => {
        question.survey = survey
        return this.createQuestion(question)
 }))
).subscribe(e=>success action....)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60645427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档