所以我正在开发社交网络项目,我添加了上传图像的功能和可以从数据库返回图像对象的API路径,以便我可以显示它们。这一切都运行正常,然后我休息了几天(新游戏出来了)现在API溃败没有工作,有点。
所以这是路线:
router.get("/image/all/:id", function(req, res, next) {
console.log("Triggered: Images/all/ID");
Image.find({owner_id: req.params.id}).populate("comments").exec(function(err, images) {
if(err) {
req.flash('error', err.toString());
return next();
} else {
console.log("images API trigger");
res.json(images);
return next();
}
});
});
这是ajax电话:
$.ajax({url: "/image/all/" + uid, success: function(data) {
for(let i = 0; i < data.length; i++){
let img = "<a class='aPic' href='#' data-toggle='modal' data-target='.view-image-modal' data-id='" + data[i]._id + "'> <img src='" + data[i].thumb + "' class='thumbnail pull-left'></a>";
$('#proBox').append(img);
imageData.push(data[i]);
}
$('.view-image-modal').on('show.bs.modal', function(e) {
var button = $(e.relatedTarget);
var id = button.data('id');
var image;
for(let i = 0; i < imageData.length; i++) {
console.log(imageData[i]._id + " | " + id);
let imId = imageData[i]._id.toString();
if(imId == id){
image = imageData[i];
console.log("Found: " + imageData[i].file);
}
}
let splt = image.file.split(".");
let ext = "." + splt[splt.length - 1];
$('.modal-content img').attr('src', "/images/uploads/" + id + ext);
$('.modal-title').html("Uploaded: " + moment(image.created).format("MM/DD/YYYY"));
$('#imgDesc').val(image.description);
$('#imgEdit-button').attr('data-id', id);
$('#imgDelete-button').attr('data-id', id);
//Update comments section
});
}});
所以我得到这个网址:http://127.0.0.1:8080/image/all/5989da1afdc58624a0b10fda
控制台提供错误404,如果我把它放在地址栏中我得到&#34;无法获取...&#34;但是如果我在id中添加或删除一个字母,它会返回一个应该的数组。
我还在一个隐身窗口中尝试了这个,以确保它不是缓存文件问题或类似的东西。有什么想法吗?
答案 0 :(得分:0)
在上面的代码中,当发生错误时,您调用next()
。如果你这样做并且你没有错误处理程序,那么你将得到一个404.在你的错误情况下,返回res.json(错误)而不是返回next(),你可能真的看到它失败的原因。
或者,您可以添加错误处理程序作为最终的中间件并调用next(错误)。