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

问题描述 投票:0回答:1

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

我已经完成了一部分,但是在创建一个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;

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

html mongodb express mongoose pug
1个回答
0
投票

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

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


0
投票
  1. 你不能改变ID
  2. 据我所知,'PUT'方法不直接支持。你需要方法覆盖
© www.soinside.com 2019 - 2024. All rights reserved.