Mongodb/Node.js findByIdAndUpdate方法未更新
我正在尝试使用findByIdAndUpdate方法更新mongo数据库中的集合。我点击端点并发送带有更新信息的请求,响应始终是更新之前的信息,并且更新从未出现在我的数据库中 我做错了什么 下面是我的edit.js文件:Mongodb/Node.js findByIdAndUpdate方法未更新,node.js,mongodb,Node.js,Mongodb,我正在尝试使用findByIdAndUpdate方法更新mongo数据库中的集合。我点击端点并发送带有更新信息的请求,响应始终是更新之前的信息,并且更新从未出现在我的数据库中 我做错了什么 下面是我的edit.js文件: const express = require('express'); const bodyParser = require('body-parser'); const _ = require('lodash'); const dbConfig = require('../mo
const express = require('express');
const bodyParser = require('body-parser');
const _ = require('lodash');
const dbConfig = require('../mongo/dbConfig');
const Band = require('../mongo/models/band');
const mongoose = require('mongoose');
// Initialize the router
const router = express.Router();
mongoose.connect(dbConfig.devUrl);
//init body parser
router.use(
bodyParser.urlencoded({
extended: true
})
);
router.use(bodyParser.json());
router.post('/band/editProfile', function (req, res) {
console.log(req.body);
console.log("it hit !!!!!!!!!!!!!!!!!!");
Band.findByIdAndUpdate(
// the id of the item to find
req.body.id,
{
bands: {
bandName: req.body.bandName,
genre: req.body.genre,
numberOfMembers: req.body.numberOfMembers,
city: req.body.city,
state: req.body.state,
zip: req.body.zip,
travel: req.body.travel,
travelDistance: req.body.travelDistance,
spotify: req.body.spotify,
youtube: req.body.youtube,
soundcloud: req.body.soundcloud,
twitter: req.body.twitter,
facebook: req.body.facebook
}
},
function (err, response) {
// Handle any possible database errors
if (err) {
console.log("we hit an error" + err);
res.json({
message: 'Database Update Failure'
});
}
console.log("This is the Response: " + response);
}
);
});
这是我的乐队模型:
//Module Imports
const mongoose = require('mongoose');
//Initializes a mongoose schema to be used with the document
const bandSchema = new mongoose.Schema({
bandName: String,
genre: String,
numberOfMembers: Number,
city: String,
state: String,
zip: String,
travel: Boolean,
travelDistance: Number,
spotify: String,
youtube: String,
soundcloud: String,
twitter: String,
facebook: String
});
//Creates the Schema to be used with the export
let Band = mongoose.model('band', bandSchema);
//Exports the Schema to the API
module.exports = Band;
我已经对此进行了非常彻底的研究,我被卡住了,因此非常感谢您的帮助
波段
在更新对象中,但不在模式中。只需删除更新对象的附加层,更新就可以工作了。但是您还需要将{new:true}
选项作为单独的参数包含在内,以便返回更新的文档而不是原始文档(请参阅)
这就解决了!非常感谢你!
Band.findByIdAndUpdate(
req.body.id,
{
bandName: req.body.bandName,
genre: req.body.genre,
numberOfMembers: req.body.numberOfMembers,
city: req.body.city,
state: req.body.state,
zip: req.body.zip,
travel: req.body.travel,
travelDistance: req.body.travelDistance,
spotify: req.body.spotify,
youtube: req.body.youtube,
soundcloud: req.body.soundcloud,
twitter: req.body.twitter,
facebook: req.body.facebook
},
{new: true},
function (err, response) {
// Handle any possible database errors
if (err) {
console.log("we hit an error" + err);
res.json({
message: 'Database Update Failure'
});
}
console.log("This is the Response: " + response);
}
);