Express.js的PUT请求没有更新MongoDB。

我正在做一个项目,基本上是一个超级淡化的社交媒体网站。

我已经完成了一部分,但是在创建一个put请求到我的mongodb时遇到了一些问题。基本上,我想发送一个put请求来更新一个数值,以便在每篇文章中都有一个like计数器。

我现在要做的是发送一个带有特定帖子id的put请求。我把帖子的id存储在一个隐藏的文本框中,以便引用它。这是pug格式的HTML。

input.form-control(type='hidden' value=item.id id='postId' placeholder='' name='postId' required='false')
      form(method='PUT' action='/update/{{post._id}}')
        button(type='submit') Like

然后在我的 router.js 文件中,我基本上是想把这个 id 收录进来,然后把 Post schema 中的 likes 字段设置为 1(只是为了测试)。

router.put('/update/:id', function (req, res, next) {
    let id = {
      _id: ObjectID(req.params.id)
    };

    Post.update({_id: id}, {$set:{'likes': 1}}, (err, result) => {
      if(err) {
        throw err;
      }
      res.send('user updated sucessfully');
    });
});

以下是我的文章模式

var mongoose = require("mongoose");

var PostSchema = new mongoose.Schema({
  postText: {
    type: String,
    unique: false,
    required: true,
    trim: true
  },
  usernameText: {
    type: String,
    unique: false,
    required: true,
    trim: true
  },
  likes:{
    type: Number,
    unique: false,
    required: false
  }
});


var Post = mongoose.model("Posts", PostSchema);
module.exports = Post;

衷心感谢您的帮助,谢谢您

解决方案:

你不能改变ObjectId。ObjectId是由MongoDB生成的,用户不能使用查询函数更改。

例如,如果你想给每个用户分配一个唯一的ID,那么在你的模式中创建一个单独的字段。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Redux - 如何更新一个数组中的项目

2022-4-22 19:09:59

解决方案

git 将推送的文件重置为之前的提交。

2022-4-22 19:10:02

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索