0
私のサービスでは、サーバーに呼び出しを行うgetProducts()とgetProductsByType()という2つの機能がほとんど同じです。 getProductsByType()はサーバー関数を呼び出し、データを返します。 getProducts()関数は対応するサーバー関数を呼び出しますが、サーバー関数は呼び出されません。角2/Mongoose:呼び出されたサーバー関数が呼び出されていない
サービス機能:
@Injectable()
export class DataService {
private products: Product[];
private productsUrl: string = "/api/products/all";
private productUrl: string = "/api/products/";
constructor(private http: Http) {
this.getProducts();
}
public getProducts() {
console.log("DataService.getProducts called");
this.http.get(this.productsUrl)
.map((response: Response) => {
this.products = response.json();
})
.catch(this.handleError)
}
public getProductsByType(type: string): Observable<Product[]> {
console.log("DataService.getProductsByType called");
return this.http.get(this.productUrl + type)
.map((response: Response) => {
return response.json() as Product[] || null;
})
.catch(this.handleError)
}
}
サーバー機能:それは既存後者競合しそうなので
router.get("/products/:type", function (req, res) {
console.log("Get product by type called")
Product.find({ "producttype": req.params.type })
.exec(function (err, products) {
if (err) {
console.log("Error retrieving products: " + req.params.type);
res.json(err);
} else {
// console.log("products = " + JSON.stringify(products));
res.json(products);
}
});
})
router.get("/products/all", function (req, res) {
console.log("Get product called")
Product.find({})
.exec(function (err, products) {
if (err) {
console.log("Error retrieving products");
res.json(err);
} else {
console.log("products = " + JSON.stringify(products));
res.json(products);
}
});
})
Hummm、console.logが表示されない(「製品の入手」を参照)ログが記録されていますか?またはconsole.log( "products =" + JSON.stringify(products))が表示されません。ログインしていますか? – Frank
どちらも記録されません。 – koque
私は速達を使用してから申し訳ありません。たぶん、あなたの最初のルートに対して "/ api/products/all"をマッチさせ、 "all"を引数として解釈することがあります。ルートを並べ替えたり、 "/ products /:type"ルートでnext()を呼び出そうとしたかもしれません。私は行くつもりだ、私はより多くの助けになることができなかった申し訳ありません。がんばろう! – Frank