Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 每次点击(角度/节点)时的增量数据(MongoDB)作为Facebook;“像按钮一样”不起作用_Node.js_Angular_Mongodb_Express_Mean Stack - Fatal编程技术网

Node.js 每次点击(角度/节点)时的增量数据(MongoDB)作为Facebook;“像按钮一样”不起作用

Node.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}`;

我想在我的应用程序上添加一个“喜欢”按钮,但它不起作用。 我没有任何特定的错误消息,只有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}`;
    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
行有干扰,尽管我不太确定。你能试着删除它,看看它是否有效吗?你的Mongoose
updateOne
抛出了一个错误。你确定你要传递的
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 }));