InMemoryWebApiModule - 状态:404 - 找不到集合
InMemoryWebApiModule - status: 404 - collection not found
我正在尝试使用 angular2 InMemoryWebApiModule 并实施 InMemoryDbService,以创建我的后端服务器的模型。我将其配置为(我认为)它应该的样子,但不知何故我无法访问实现 InMemoryDbService 的数据结构(worker.ts 中的 WorkerData)并继续获取状态 404("Collection 'workers' not found")。我简化了代码以使其更清晰。这是一个 URL 问题 - 无法弄清楚原因。
在服务中执行getWorkrs函数时出现问题。
看我的代码:
App.module.ts:
import { WorkerData } from './Services/worker';
import {InMemoryWebApiModule } from 'angular-in-memory-web-api';
@NgModule({
imports: [ BrowserModule, HttpModule, ReactiveFormsModule, FormsModule,
RouterModule, routes, InMemoryWebApiModule.forRoot(WorkerData) ],
declarations: [ ... ],
providers: [ WorkerService],
bootstrap: [ AppComponent ]
})
export class AppModule { }
worker.ts:
import { Injectable } from '@angular/core';
import { InMemoryDbService,RequestInfo } from 'angular-in-memory-web-api';
export interface IWorker
{
id: number;
IDNumber: number;
FirstName?:string;
LastName?:string;
Email? : string;
DateOfBirth?: string;
PhoneNumber1?: string;
PhoneNumber2?: string;
Street1? :string;
Street2?: string;
City?: string;
Zip?:number;
General_Additional_Data?: string;
}
@Injectable()
export class WorkerData implements InMemoryDbService
{
createDb()
{
let workers =
[{
"id": 1,
"IDNumber": 289156,
"FirstName":"qqqqqq",
"LastName":"cccccc",
"DateOfBirth": "02/11/1991",
"PhoneNumber1": "3422-088808",
"PhoneNumber2":"3234-6321223",
"General_Additional_Data": "qqqqqqqqqqqqq"
},
{
"id": 2,
"IDNumber": 289157,
"FirstName":"aaaaaaa",
"LastName":"bbbbbbb",
"DateOfBirth": "05/11/1981",
"PhoneNumber1": "02328-08434348",
"PhoneNumber2":"052322-63213434",
"General_Additional_Data": "efefsdfsdfs"
},
{
"id": 3,
"IDNumber": 289466,
"FirstName":"aaaaa",
"LastName":"bbbbbb",
"DateOfBirth": "05/1/1991",
"PhoneNumber1": "0328-45634348",
"PhoneNumber2":"3232-7613434",
"General_Additional_Data": "aaaaaaaaaaaaaaaaa"
}];
return workers;
}
}
export class Worker implements IWorker{
constructor(
public id =-1,
public IDNumber = -1,
public FirstName?:string,
public LastName?:string,
public Email? : string,
public DateOfBirth?: string,
public PhoneNumber1?: string,
public PhoneNumber2?: string,
public Street1? :string,
public Street2?: string,
public City?: string,
public Zip?:number,
public General_Additional_Data?: string
){}
}
WorkerService.service(和上面的worker.ts在同一个文件夹):
import { Injectable } from '@angular/core';
import { Http, Response} from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { IWorker, WorkerData } from './Services/worker';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/do';
import 'rxjs/add/operator/map';
import 'rxjs/add/observable/of';
@Injectable()
export class WorkerService
{
private _workerURL = 'api/workers';
constructor (private _http: Http){}
getWorkers(): Observable<IWorker[]>
{
return this._http.get(this._workerURL)
.map((response : Response) => <IWorker[]>
response.json())
.do(data => console.log('All: ' +
JSON.stringify(data)))
.catch(this.handleError);
}
您似乎错误配置了从 createDb
编辑的对象 return。 docs 声明此对象是:
hash whose keys are collection names and whose values are arrays of collection objects to return or update.
在您的示例中,您正在 return 从 createDb
中创建一个数组,这是您的 workers
集合本身。相反,您需要 return 描述的对象。即
return { workers: workers };
-或-
return { workers }; // Shorthand for the above.
我正在尝试使用 angular2 InMemoryWebApiModule 并实施 InMemoryDbService,以创建我的后端服务器的模型。我将其配置为(我认为)它应该的样子,但不知何故我无法访问实现 InMemoryDbService 的数据结构(worker.ts 中的 WorkerData)并继续获取状态 404("Collection 'workers' not found")。我简化了代码以使其更清晰。这是一个 URL 问题 - 无法弄清楚原因。
在服务中执行getWorkrs函数时出现问题。 看我的代码: App.module.ts:
import { WorkerData } from './Services/worker';
import {InMemoryWebApiModule } from 'angular-in-memory-web-api';
@NgModule({
imports: [ BrowserModule, HttpModule, ReactiveFormsModule, FormsModule,
RouterModule, routes, InMemoryWebApiModule.forRoot(WorkerData) ],
declarations: [ ... ],
providers: [ WorkerService],
bootstrap: [ AppComponent ]
})
export class AppModule { }
worker.ts:
import { Injectable } from '@angular/core';
import { InMemoryDbService,RequestInfo } from 'angular-in-memory-web-api';
export interface IWorker
{
id: number;
IDNumber: number;
FirstName?:string;
LastName?:string;
Email? : string;
DateOfBirth?: string;
PhoneNumber1?: string;
PhoneNumber2?: string;
Street1? :string;
Street2?: string;
City?: string;
Zip?:number;
General_Additional_Data?: string;
}
@Injectable()
export class WorkerData implements InMemoryDbService
{
createDb()
{
let workers =
[{
"id": 1,
"IDNumber": 289156,
"FirstName":"qqqqqq",
"LastName":"cccccc",
"DateOfBirth": "02/11/1991",
"PhoneNumber1": "3422-088808",
"PhoneNumber2":"3234-6321223",
"General_Additional_Data": "qqqqqqqqqqqqq"
},
{
"id": 2,
"IDNumber": 289157,
"FirstName":"aaaaaaa",
"LastName":"bbbbbbb",
"DateOfBirth": "05/11/1981",
"PhoneNumber1": "02328-08434348",
"PhoneNumber2":"052322-63213434",
"General_Additional_Data": "efefsdfsdfs"
},
{
"id": 3,
"IDNumber": 289466,
"FirstName":"aaaaa",
"LastName":"bbbbbb",
"DateOfBirth": "05/1/1991",
"PhoneNumber1": "0328-45634348",
"PhoneNumber2":"3232-7613434",
"General_Additional_Data": "aaaaaaaaaaaaaaaaa"
}];
return workers;
}
}
export class Worker implements IWorker{
constructor(
public id =-1,
public IDNumber = -1,
public FirstName?:string,
public LastName?:string,
public Email? : string,
public DateOfBirth?: string,
public PhoneNumber1?: string,
public PhoneNumber2?: string,
public Street1? :string,
public Street2?: string,
public City?: string,
public Zip?:number,
public General_Additional_Data?: string
){}
}
WorkerService.service(和上面的worker.ts在同一个文件夹):
import { Injectable } from '@angular/core';
import { Http, Response} from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { IWorker, WorkerData } from './Services/worker';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/do';
import 'rxjs/add/operator/map';
import 'rxjs/add/observable/of';
@Injectable()
export class WorkerService
{
private _workerURL = 'api/workers';
constructor (private _http: Http){}
getWorkers(): Observable<IWorker[]>
{
return this._http.get(this._workerURL)
.map((response : Response) => <IWorker[]>
response.json())
.do(data => console.log('All: ' +
JSON.stringify(data)))
.catch(this.handleError);
}
您似乎错误配置了从 createDb
编辑的对象 return。 docs 声明此对象是:
hash whose keys are collection names and whose values are arrays of collection objects to return or update.
在您的示例中,您正在 return 从 createDb
中创建一个数组,这是您的 workers
集合本身。相反,您需要 return 描述的对象。即
return { workers: workers };
-或-
return { workers }; // Shorthand for the above.