微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 in-memory-web-api 将特定对象添加到集合中

如何解决使用 in-memory-web-api 将特定对象添加到集合中

我正在开发我的项目,在测试阶段我使用了 angular npm 包的 in-memory-web-api。

import { InMemoryDbService } from "angular-in-memory-web-api";

  export class FakeBackendService implements InMemoryDbService{
  createDb(){
        let users = [
        {
            id: 1,username: 'maulik',city: 'ABC',state: 'xyz',role: 'admin',courses: []
        },{
            id: 2,username: 'donald',city: 'poi',state: 'bnv',role: 'Student',courses: [
                {
                    courseId: 23,course_name: 'Data visualisation',preRequistics: 'NA',instructor_name: 'maulik',duration: 23,status: 'In-progress',}
            ]
        }

    ];
  }

现在,我想在 id:2 的课程数组中添加一个对象,如下所示:

 courses: [
                {
                    courseId: 23,},{
                    courseId: 28,course_name: 'Django',preRequistics: '',duration: 80,}
            ]

所以,我想在课程数组中添加新对象(更新)。那么使用 PUT 或 POST 方法如何为此编写 API?我使用 PUT 尝试了以下代码,但没有成功。有人可以帮我吗?

const url = '${this.url}/?courses=${data.object}'

解决方法

要在数据集中添加/插入新记录,请使用 HTTP POST。

Angular 内存中提供程序将拦截对内存中数据服务的任何 HTTP 请求。你可以试试这样的:

addCourse(course: Course): Observable<Course> {
    return this.http.post<Course>(this.Url,course,this.httpOptions)
        .pipe(
            tap((newCourse: Course) => 
                this.log(`added course with id=${newCourse.id}`)),catchError(this.handleError<Course>('addCourse'))
        );
}

使用 HTTP PUT 要求您使用现有记录 ID,这仅对更新现有记录有用。所以在这种情况下使用 HTTP POST。

,

我刚刚进行了几次尝试和错误,并使用 PUT 方法找到了解决方案。

updateCourse(courseObj){
   return this.http.put(this.base_url,courseObj)
          .pipe(map(res => res));
}

它更新现有记录如下:

courses: [
                {
                    courseId: 3,course_name: 'Angular',preRequistics: 'typescript',instructor_name: 'donald',duration: 5,status: 'In-progress',noOfEnrolledStudents: 18
                },{
                    courseId: 4,course_name: 'new course added',preRequistics: 'NA',instructor_name: 'George',duration: 8,noOfEnrolledStudents: 0
                }
            ]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。