2017-02-11 51 views
0

从数据库中清除破损图像的最佳方法。我在我的mongodb数据库中有30,000多个图像条目,但是随着时间的推移,许多图像条目都被打破了。我只想返回在服务器端没有损坏的图像。找到所有破损图像并添加参数或从数据库中删除损坏的图像的最佳方法是什么?在mongodb数据库中破碎的图像

当前我将所有图像返回到前端,并执行并隐藏'onerror'属性。我是否应该导出并遍历所有图像并获取图像id的导出?有更好的选择,或者我可以用什么来做到这一点?只是寻求建议。

+0

我在mongo中遇到图像损坏的问题,并且转储数据并恢复它,修复了问题 – Mikkel

+0

您可以编写一个cron作业,每月(或更长时间)尝试使用'HTTP.get() '并在失败时从集合中移除url。 –

+0

你在数据库中存储了什么图像(图像,URL,二进制图像,API参考等的文件路径)?你怎么能告诉图像是“破碎的”(即是腐败/失踪/ ...)? – Stennie

回答

0

您可以使用Blaze模板事件处理程序捕获图像加载错误,然后将图像标记为失败,或者将其删除。自清洁和始终运行...

Template.ImageLoader.events({ 
    //TODO: possibly add an extra class name on the img tag, to make sure you only catch errors from your collection. 
    'error img': function(event, template) { 
    const url = event.currentTarget.src; 
    //TODO: find the image in your collection, using the url 
    //TODO: perform cleanup (flag or delete) 
    alert(`error loading image ${url}`); 
    } 
}); 

我建议增加一个错误计数器到您的收藏,它每次出现加载错误$inc。一旦加载错误计数达到某个数字,请删除它。