【发布时间】:2017-12-26 15:23:55
【问题描述】:
上下文:我有一个 Post Mongoose 模型,其中包含一个 csv_files 数组字段来存储 csv 字符串。我从另一个 Web 应用程序发出 fetch API 请求,以 POST 特定 Post 的 csv 字符串。
下面的代码会产生错误
UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:2):VersionError:找不到与 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 };
如何解决此问题,以便文档保存到 csv_files 数组中而不会出现错误?
【问题讨论】:
-
多个请求是否可能导致(几乎)同时处理同一个文档?
-
@robertklep 检查并发访问解决了我的问题,谢谢!你能写一个答案吗?
标签: javascript node.js mongodb csv mongoose