Javascript 角度6:使用ID向数据库添加数据
我有一个只显示来自外部api的电影的应用程序,因此我在我的应用程序中添加了单个电影的评论部分,我的问题是当用户在名为《泰坦尼克号》的电影中输入评论时,我可以看到添加到所有电影中的评论Javascript 角度6:使用ID向数据库添加数据,javascript,node.js,angular,express,Javascript,Node.js,Angular,Express,我有一个只显示来自外部api的电影的应用程序,因此我在我的应用程序中添加了单个电影的评论部分,我的问题是当用户在名为《泰坦尼克号》的电影中输入评论时,我可以看到添加到所有电影中的评论,这是错误的,我想要的是添加到电影《泰坦尼克号》中的评论不应该显示在其他电影中 以下是我所拥有的: server.js更新 service.js 问题 我的代码中缺少了什么 1) 在添加新评论的POST请求中添加相应的电影id addReview(movieId, author, description): Obse
,这是错误的,我想要的是添加到电影《泰坦尼克号》中的评论不应该显示在其他电影中
以下是我所拥有的:
server.js更新
service.js
问题
我的代码中缺少了什么
1) 在添加新评论的POST请求中添加相应的电影id
addReview(movieId, author, description): Observable<any> {
const obj = {movieId, author, description};
例如,您应该/post到一个特定的电影ID,在那里您可以在其评论字段数组下添加新评论
此外,拥有/评论是一种不好的做法,因为你真正想要的是在特定电影中发布附加评论。如下所示:
router.post('/movie/:id/newcomment:', function(req, res) {
Movie.findOne({ _id: req.params.id })
.then(movie => {
movie.comments.push(req.body.comment);
movie.save();
.then(result => {
res.status(200).json({'message': 'comment added successfully'});})
.catch(err => {
res.status(400).send("unable to save to database");
});
}
});
但这里的主要问题是你误解了你到底需要做什么
您可以从现有API获取数据,但您希望从获取的数据向特定电影添加特定注释
如果不完全控制外部API,就无法实现此目标
实际上,您可以构建一个客户端数据结构来保存所有获取的数据,然后将另一个名为comments的属性和一个ID属性添加到该数据结构中的每个电影对象,因此,您以后可以通过ID访问该数据结构并更新特定属性。代码看起来没问题。请同时发布getComments服务方法。服务方法addReview应该做什么?我认为它应该在一部特定的电影中添加一条评论,但是URL读起来不同。我曾经想象过类似于{movieId}/comments/@baj9032检查qn的东西现在,我已经添加了你请求getComments的方法service@addreview方法我想要一个评论应该使用ID添加到一个特定的电影中,现在它的评论被添加到所有的电影中而不是一个特定的电影中,我被困在这里如何解决这个问题,你能帮忙吗?那componet呢?组件调用addReview方法,对吗?它只需要将movieId作为参数传递。这是你的问题吗?是的,我尝试实现了你的方法,但它不起作用。我只想将注释发布到特定的ID,问题从服务器中的post for comments方法开始。问题是什么?如果您使用的是mongoose,您需要将movieId添加到您的评论模式中。您好,那么addReview的服务方法如何处理这些更改?
addReview(author, description) {
this.moviesService.addReview(author, description).subscribe(success => {
this.flashMessages.show('You are data we succesfully submitted', { cssClass: 'alert-success', timeout: 3000 });
// get the id
this.activeRouter.params.subscribe((params) => {
// tslint:disable-next-line:prefer-const
let id = params['id'];
this.moviesService.getComments(id)
.subscribe(comments => {
console.log(comments);
this.comments = comments;
});
});
}, error => {
this.flashMessages.show('Something went wrong', { cssClass: 'alert-danger', timeout: 3000 });
});
}
addReview(movieId, author, description): Observable<any> {
const obj = {movieId, author, description};
router.get('/comments/:movieId', function(req, res) {
const movieId= request.params.movieId;
Comments.find({ movieId });
router.post('/movie/:id/newcomment:', function(req, res) {
Movie.findOne({ _id: req.params.id })
.then(movie => {
movie.comments.push(req.body.comment);
movie.save();
.then(result => {
res.status(200).json({'message': 'comment added successfully'});})
.catch(err => {
res.status(400).send("unable to save to database");
});
}
});