我是编程和学习从Adam Freeman一书中做角度示例项目的新手。 问题出在对服务器的异步HTTP请求中。
以下是使用saveProduct()方法的模型的一部分:
export class Model {
private products: Product[];
private locator = (p: Product, id: number) => p.id == id;
constructor(private dataSource: RestDataSource) {
this.dataSource.getData().subscribe(data => this.products = data);
}
getProducts(): Product[] {
return this.products;
}
getProduct(id: number): Product {
return this.products.find(p => this.locator(p, id));
}
saveProduct(product: Product) {
if (product.id == 0 || product.id == null) {
this.dataSource.saveProduct(product).subscribe(p => this.products.push(p));
} else {
this.dataSource.updateProduct(product).subscribe(p => {
let index = this.products.findIndex(item => this.locator(item, p.id));
this.products.splice(index, 1, p);
});
}
}
这是我的RestDataSource:
export const REST_URL = new OpaqueToken("rest_url");
@Injectable()
export class RestDataSource {
constructor(private http: Http, @Inject(REST_URL) private url: string) { }
getData(): Observable<Product[]> {
return this.sendRequest(RequestMethod.Get, this.url);
}
saveProduct(product:Product): Observable<Product>{
return this.sendRequest(RequestMethod.Post, this.url, product);
}
private sendRequest(verb: RequestMethod, url: string, body?: Product) {
return this.http.request(new Request({
method: verb,
url: url,
body: body,
headers: new Headers({
"Access-Key": "<secret>",
"Application-Name": "exampleApp"})
})).map(response => response.json()).catch((error: Response) => Observable.throw(`Network Error: ${error.statusText} (${error.status})`));
}
}
我认为在saveProduct请求必须是Product对象之后作为响应,我们可以推送我们的产品数组,但我总是得到回应:
{fieldCount:0,affectedRows:1,insertId:120,serverStatus:2,warningCount:0,...}和表中的空行
请帮我理解这个问题。这有什么不对?