2017-02-11 12 views
0

데이터베이스에서 깨진 이미지를 지우는 가장 좋은 방법입니다. mongodb 데이터베이스에는 30,000 개 이상의 이미지 항목이 있지만 많은 사람들이 시간이 지남에 따라 손상되었습니다. 서버 측에서 손상되지 않은 이미지 만 반환하고 싶습니다. 모든 깨진 이미지를 찾고 매개 변수를 추가하거나 손상된 이미지를 데이터베이스에서 삭제하는 가장 좋은 방법은 무엇입니까?mongodb 데이터베이스의 손상된 이미지

현재 모든 이미지를 프론트 엔드로 반환하고 'onerror'속성에서 숨기고 있습니다. 어떻게하면 모든 이미지를 내보내고 반복해야하고 이미지 ID를 내보낼 수 있습니까? 더 나은 옵션이 있습니까? 아니면이 옵션을 사용하면됩니까? 그냥 조언을 찾고.

+0

mongo에서 이미지가 손상되는 문제가 발생하여 데이터를 덤프하고 복원하여 문제를 해결했습니다. – Mikkel

+0

한 달에 한 번 (또는 그 이상) 'HTTP.get()'을 사용하여 모든 이미지를로드하려고 시도하는 cron 작업을 작성할 수 있습니다. '실패하면 컬렉션에서 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에 오류 카운터를 추가 건의 할 것입니다. 로드 오류 수가 특정 숫자에 도달하면 삭제하십시오.