我试图在单击按钮时将布尔值更新为true。当我在controller update方法中console.log响应的主体时,updated字段是正确的,但在数据库中未更改。同样,响应是巨大的,因此我认为我发送的邮件有问题。我设置了{new:true},但仍然没有区别。我在这里做错了。这是我的代码:
模型
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const albumSchema = new Schema({
albumId: { type: String },
title: { type: String },
artist: { type: String },
tracks: { type: [String], required: true },
year: { type: Number, required: true },
thumbnail: { type: String },
description: { type: String },
listened: { type: Boolean, default: false },
});
const Album = mongoose.model("Album", albumSchema);
module.exports = Album;
反应
changeStatus = (album) => {
album.listened = true;
API.updateAlbum(album)
}
API
updateAlbum: function(album) {
return axios.put(`/api/albums/${album._id}`, album);
},
路由
router.route("/albums/:id").put(albumController.update)
猫鼬控制器
update: function(req, res) {
db.Album.findOneAndUpdate({ id: req.params.id }, req.body, { new: true })
.then(dbAlbum => res.json(dbAlbum.body))
.catch(err => res.status(422).json(err));
},
答案 0 :(得分:1)
您必须在更新文件后保存文件
update: function(req, res) {
db.Album.findOneAndUpdate({ id: req.params.id }, req.body, { new: true })
.then((dbAlbum)=>{
dbAlbum.save()
.then((saved)=>{
res.json(dbAlbum)
})
.catch((err)=>{
res.status(422).json(err)
})
})
.catch(err => res.status(422).json(err));
}