【发布时间】:2021-08-24 21:40:28
【问题描述】:
我正在制作一个 Angular 项目来显示、添加、删除和更新员工详细信息。我有一个让自己连接的 api,但是当我尝试发布或获取员工列表时,我总是遇到同样的错误。我正在使用 Angular、Express、Node 和 Mongodb。任何帮助将不胜感激。我不确定要放置什么代码以使帮助更容易,但我可以放置错误。在此处输入图像描述
import { Injectable } from '@angular/core';
import { Employee } from './Employee';
import { catchError, map } from 'rxjs/operators';
import { Observable, throwError } from 'rxjs';
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class CrudService {
// Node/Express API
REST_API: string = 'http://localhost:8000/api';
// Http Header
httpHeaders = new HttpHeaders().set('Content-Type', 'application/json');
router: any;
constructor(private httpClient: HttpClient) { }
// Add
AddEmployee(data: Employee): Observable<any> {
let API_URL = `${this.REST_API}/add-employee`;
return this.httpClient.post(API_URL, data)
.pipe(
catchError(this.handleError)
)
}
// Get all objects
GetEmployees() {
return this.httpClient.get(`${this.REST_API}`);
}
// Get single object
GetEmployee(id:any): Observable<any> {
let API_URL = `${this.REST_API}/read-employee/${id}`;
return this.httpClient.get(API_URL, { headers: this.httpHeaders })
.pipe(map((res: any) => {
return res || {}
}),
catchError(this.handleError)
)
}
// Update
updateEmployee(id:any, data:any): Observable<any> {
let API_URL = `${this.REST_API}/update-employee/${id}`;
return this.httpClient.put(API_URL, data, { headers: this.httpHeaders })
.pipe(
catchError(this.handleError)
)
}
// Delete
deleteEmployee(id:any): Observable<any> {
let API_URL = `${this.REST_API}/delete-employee/${id}`;
return this.httpClient.delete(API_URL, { headers: this.httpHeaders}).pipe(
catchError(this.handleError)
)
}
// Error
private handleError(error: Response | any) {
let errorMessage = '';
if (error.status == 0) {
// Handle client error
errorMessage = error.error.message;
this.router.navigate(['/error'])
} else {
// Handle server error
errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
}
console.log(errorMessage);
return throwError(errorMessage);
}
}
import { Injectable } from '@angular/core';
import { Employee } from './Employee';
import { catchError, map } from 'rxjs/operators';
import { Observable, throwError } from 'rxjs';
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class CrudService {
// Node/Express API
REST_API: string = 'http://localhost:8000/api';
// Http Header
httpHeaders = new HttpHeaders().set('Content-Type', 'application/json');
router: any;
constructor(private httpClient: HttpClient) { }
// Add
AddEmployee(data: Employee): Observable<any> {
let API_URL = `${this.REST_API}/add-employee`;
return this.httpClient.post(API_URL, data)
.pipe(
catchError(this.handleError)
)
}
// Get all objects
GetEmployees() {
return this.httpClient.get(`${this.REST_API}`);
}
// Get single object
GetEmployee(id:any): Observable<any> {
let API_URL = `${this.REST_API}/read-employee/${id}`;
return this.httpClient.get(API_URL, { headers: this.httpHeaders })
.pipe(map((res: any) => {
return res || {}
}),
catchError(this.handleError)
)
}
// Update
updateEmployee(id:any, data:any): Observable<any> {
let API_URL = `${this.REST_API}/update-employee/${id}`;
return this.httpClient.put(API_URL, data, { headers: this.httpHeaders })
.pipe(
catchError(this.handleError)
)
}
// Delete
deleteEmployee(id:any): Observable<any> {
let API_URL = `${this.REST_API}/delete-employee/${id}`;
return this.httpClient.delete(API_URL, { headers: this.httpHeaders}).pipe(
catchError(this.handleError)
)
}
// Error
private handleError(error: Response | any) {
let errorMessage = '';
if (error.status == 0) {
// Handle client error
errorMessage = error.error.message;
this.router.navigate(['/error'])
} else {
// Handle server error
errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
}
console.log(errorMessage);
return throwError(errorMessage);
}
}
【问题讨论】:
-
您的 express 服务器是否在 8000 端口运行?
-
是的,我的 Express API 在 REST_API 上运行:string = 'localhost:8000/api。我已经编辑了我的帖子以显示 crud.service.ts
-
尝试在浏览器中打开localhost:8000/api,看看会得到什么
-
进入您的目录。并运行节点 NameOfFile.js。
-
明白了,感谢一百万的帮助,我得到了它。我刚刚发布了另一个问题,您是否有机会看一看,看看您是否知道发生了什么?