2017-02-11 4 views
0

データベースから壊れた画像を消去する最適な方法。私はmongodbデータベースに30,000以上のイメージエントリを持っていますが、多くは時間の経過とともに壊れています。私は、サーバー側で壊れていないイメージだけを返したいと思います。すべての壊れた画像を見つけてパラメータを追加するか、データベースから壊れた画像を削除するのに最適な方法は何でしょうか?mongodbデータベースの壊れた画像

現在、私はすべての画像をフロントエンドに戻していて、 'onerror'属性を使って隠しています。何とかすべてのイメージをエクスポートして反復処理し、イメージIDをエクスポートする必要がありますか?より良い選択肢があるのですか、これを行うために何が使えますか?ちょうどアドバイスを探しています。

+0

私はmongoの画像の破損に問題があり、データをダンプして復元して問題を解決しました – Mikkel

+0

月に一度(またはそれ以上)が '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それに読み込みエラーが発生するたびにエラーカウンタを追加することを示唆しています。負荷エラー数が一定数に達すると、それを削除します。

関連する問題