Node.js 每次点击(角度/节点)时的增量数据(MongoDB)作为Facebook;“像按钮一样”不起作用
我想在我的应用程序上添加一个“喜欢”按钮,但它不起作用。 我没有任何特定的错误消息,只有400(错误请求) 这就是我所做的: post.HTMLNode.js 每次点击(角度/节点)时的增量数据(MongoDB)作为Facebook;“像按钮一样”不起作用,node.js,angular,mongodb,express,mean-stack,Node.js,Angular,Mongodb,Express,Mean Stack,我想在我的应用程序上添加一个“喜欢”按钮,但它不起作用。 我没有任何特定的错误消息,只有400(错误请求) 这就是我所做的: post.HTML <button (click)="onStar(post._id,post.like)"> {{ post.like }} fans </button> 邮政服务 updateLike(id:string, like:number) { let url = `${this.uri}/like/${id}`;
<button (click)="onStar(post._id,post.like)"> {{ post.like }} fans </button>
邮政服务
updateLike(id:string, like:number) {
let url = `${this.uri}/like/${id}`;
console.log(like + ' + ' + id)
return this.http.put(url, like, { headers: this.headers }).pipe(
catchError(this.errorMgmt)
)
}
Node.JS控制器:
exports.addLike = (req, res, next) => {
Post.updateOne({ _id: req.params.id }, { like , _id: req.params.id })
.then(() => res.status(201).json({ message: 'Great!'}))
.catch(error => res.status(400).json({ error }));
}
Node.JS路由:
router.put('/like/:id', stuffCtrl.addLike);
非常感谢您的帮助:)
祝您有个美好的一天!
Rachel我相信
console.log
不是承诺。尝试注释或删除该行:
Post.updateOne({ _id: req.params.id }, { like , _id: req.params.id })
.then(() => res.status(201).json({ message: 'Great!'}))
.catch(error => res.status(400).json({ error }));
我认为Node.js控制器中的
console.log
行有干扰,尽管我不太确定。你能试着删除它,看看它是否有效吗?你的MongooseupdateOne
抛出了一个错误。你确定你要传递的id
存在吗?嗨@WillAlexander,我确定id存在。当我更新所有对象时,它会起作用。但是我只想更新一个参数(比如),看看它,你实际上并没有更新Post对象。您可能需要首先查找帖子以获取当前喜欢的数量,然后在回调中调用updateOne并将喜欢设置为喜欢+1。你明白我的意思了吗?谢谢你的帮助@WillAlexander你是说,像这样的事吗?:````Post.findOneAndUpdate({“_id”:req.params.id,“like._id”:req.body.like},{$set:{“like.$.value”:+1},{new:true}/).exec(函数(错误,Post){if(错误){返回res.status(400)。发送({msg:'Update failed!'});}返回res.status(200.send(post);})```
Post.updateOne({ _id: req.params.id }, { like , _id: req.params.id })
.then(() => res.status(201).json({ message: 'Great!'}))
.catch(error => res.status(400).json({ error }));