2017-02-11 25 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。一旦加載錯誤計數達到某個數字,請刪除它。