Context: I have a Post
Mongoose model that contains a csv_files
array field to store csv strings. I make a fetch
API request from a different web app to POST the csv strings for a particular Post
.
The code below produces an error
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): VersionError: No matching document found for id "5966932399e969ad8013bedf"
router.js
router.post('/posts/:url/upload-csv/:csv_name', (req, res) => {
let csv_name = req.params.csv_name;
let csv_string = csv_name+req.body.csv_string;
Post.findOne({url: req.params.url})
.then((post) => {
if (post.csv_files.length === 0) {
post.csv_files.push(csv_string);
} else {
let foundExistingCSV = false;
for (var i = 0; i < post.csv_files.length; i++) {
if (post.csv_files[i].includes(csv_name)) {
foundExistingCSV = true;
post.csv_files[i] = csv_string;
break;
}
}
if (!foundExistingCSV) post.csv_files.push(csv_string);
}
post.markModified('csv_files');
post.save();
return res.status(200);
})
.catch((err) => {
console.log(err);
return res.status(400);
});
});
models/post.js
const mongoose = require('mongoose');
var stringPreset = {
type: String,
uppercase: true
}
var Post = mongoose.model('Post', {
name : stringPreset,
url : String,
password : String,
csv_files : { type : Array , "default" : [] },
updatedAt : { type: Date, default: Date.now }
});
module.exports = { Post };
How can I fix this so that the document saves into the csv_files
array without the error?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…