Express.js的PUT请求没有更新MongoDB。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,那么在你的模式中创建一个单独的字段。
另一答案
- 你不能改变ID
- 据我所知,'PUT'方法不直接支持。你需要方法覆盖
以上是关于Express.js的PUT请求没有更新MongoDB。的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Mongoose 在 AngularJS 中创建 PUT 函数
无法使用 Express.js 从请求中获取 POST 正文
Express 无法 PUT/DELETE 方法。出了啥问题?