Angular2 InMemoryWebApiModule报404:'workers'集合未找到问题求助
解决InMemoryWebApiModule的"Collection 'workers' not found" 404问题
我一眼就发现问题出在你的WorkerData类的createDb方法里了!InMemoryWebApi要求这个方法返回一个对象,其中每个键对应你的集合名称,值才是对应的数据数组。你现在直接返回了workers数组,导致InMemoryWebApi没法识别这个集合的名称,自然找不到workers集合啦。
修复步骤:
1. 修改WorkerData的createDb方法
把返回的数组包装成一个对象,键名设为workers(和你API URL里的api/workers对应):
@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" }]; // 关键修改:返回包含workers属性的对象 return { workers }; } }
2. 验证其他配置
- 确认
AppModule里InMemoryWebApiModule.forRoot(WorkerData)的导入正确,没有拼写错误。 - 检查
WorkerService里的_workerURL = 'api/workers',这个路径和你返回的集合名称workers完全匹配,没问题。 - 确保
HttpModule已经正确导入到AppModule的imports数组中(你已经加了,这点没问题)。
为什么这样改?
InMemoryWebApi会把你返回的对象的键当作集合名称,比如返回{ workers: [...] },它就会自动映射到api/workers这个端点。如果你直接返回数组,它没法确定对应的集合名称,所以就会返回404错误。
改完之后再调用getWorkers方法,应该就能正常获取到模拟数据了!
内容的提问来源于stack exchange,提问作者Guy E
相关产品推荐
相关产品推荐

