2017-02-11 9 views
0

Лучший способ очистки сломанных изображений из базы данных. У меня есть 30 000 изображений в моей базе данных mongodb, однако многие из них со временем сокрушились. Я хочу только возвращать изображения, которые не разбиты на стороне сервера. Какой был бы лучший способ найти все сломанные изображения и добавить параметр или удалить сломанные изображения из базы данных?Неисправные изображения в базе данных mongodb

В настоящее время я возвращаю все изображения в интерфейс и выполняю и скрываю атрибут 'onerror'. Должен ли я каким-либо образом экспортировать и перебирать все изображения и получать экспорт идентификаторов изображений? Есть ли лучшие варианты или что я могу использовать для этого? Просто ищи совет.

+0

У меня возникла проблема с повреждением изображения в монго, и сброс данных и восстановление его устраняли проблему. – 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 это каждый раз, когда происходит ошибка загрузки. Когда количество ошибок загрузки достигнет определенного числа, удалите его.

 Смежные вопросы

  • Нет связанных вопросов^_^