嘿,在使用req.body时似乎看不到任何结果。试图从我的mongodbdatabase中获取数据为json格式,这是我的代码:
我的服务器文件:
app.get('/api/category/posts', (req, res) => {
Post.find({ categoryId: req.body._id }, function(err, posts) {
res.json(posts);
});
});
服务文件:
getPosts(_id): Observable<Post[]>{
return this.http.get<Post[]>(this.apiUrl +"/category/posts");
}
component.ts
this.appService.getPosts(_id)
.subscribe(data =>this.posts=data);
答案 0 :(得分:0)
您的api方法是get方法,并且您需要_id在req.body中。错了
您需要更改您的请求以同时发布到服务器文件和服务文件中,或者尝试在req.params或req.query中传递_id:-
如果您将_id作为req.query传递:-
您的服务器代码将类似于:-
app.get('/api/category/posts', (req, res) => {
Post.find({ categoryId: req.query._id }, function(err, posts) {
res.json(posts);
});
});
服务文件
getPosts(_id): Observable<Post[]>{
return this.http.get<Post[]>(this.apiUrl +"/category/posts"+'?_id='+_id);
}
component.ts将相同。
,如果您想使用post方法检查req.body,则您的代码将更改为:-
您的服务器代码将类似于:-
app.post('/api/category/posts', (req, res) => {
Post.find({ categoryId: req.body._id }, function(err, posts) {
res.json(posts);
}); });
服务文件
getPosts(_id): Observable<Post[]>{
return this.http.post<Post[]>(this.apiUrl +"/category/posts",{_id:_id});
}
component.ts将相同。
答案 1 :(得分:0)
遵循REST体系结构获取资源,您应该在get request参数中传递_id。您还可以使用简单的正则表达式模式来验证awk '/root/ { print $1, $2, $3 }' /var/log/wtmp
参数,以确保传递的id
是数字
快速路线
id
服务文件
app.get('/api/category/posts/:id(\\d+)', (req, res) => {
Post.find({ categoryId: req.params.id }, function(err, posts) {
res.json(posts);
});
});
组件文件
getPosts(_id): Observable<Post[]>{
return this.http.get<Post[]>(`${this.apiUrl}/category/posts/${_id}`);
}
作为一种好的做法,您还应该跟踪订阅并在完成操作或销毁组件时取消订阅,或者在第一次订阅后使用this.appService.getPosts(_id)
.subscribe(data =>this.posts=data);
运算符取消订阅。