2017-03-22 14 views
0

정보 항목을 저장할 앱을 구축 중입니다. 현재 3 개의 입력 필드 (제목, 설명 및 파일 입력)가 있습니다.첨부 파일을 추가하지 않으면 PouchDB 코드가 작동하지 않습니다.

세 필드를 모두 채우고 addItem() 함수를 호출하면 작동합니다. 그러나 입력 필드를 비워두면 함수가 데이터베이스에이를 추가하지 않습니다.

파일 입력 필드가 필요하지 않음을 알 수있는 방법이 있습니까?

내 자바 스크립트 코드 :

function addItem() { 

    //get file 
    var inputFile = document.querySelector('#inputFile'); 
    var getFile = inputFile.files[0]; 

    //get info 
    var title = document.getElementById('itemTitle').value; 
    var desc = document.getElementById('itemDesc').value; 

    //add 
    locallp.put({ 
    _id: new Date().toISOString(), 
    title: title, 
    description: desc, 
    _attachments: { 
     "file": { 
      content_type: getFile.type, 
      data: getFile 
     } 
    } 
    }).then(function(){ 
     console.log("Added to the database"); 
     location.href = "menu.html"; 
    }).catch(function(err){ 
     console.log(err); 
    }); 
} 

몇 가지 추가 정보를 원하시면, 내가 응용 프로그램을 구축 코르도바를 사용하고 있습니다. 내 데이터베이스는 PouchDB이며 couchperuser를 통해 CouchDB 서버에 연결됩니다.

답변

2

두 번째 줄 (inputFile.files[0])은 파일을 제공하지 않으면 작동합니다. 어쨌든 파일이 없으면 getFile.type 메서드 호출이 실패 할 것이라고 확신합니다.

이 방법에는 논리가 있어야 파일이 제공되는지 여부에 따라 두 가지 다른 작업이 수행됩니다. 거기에 하나가 있다면 당신이 가지고있는 것을 수행하고, 그렇지 않다면 _attachments을 추가하지 말고 아마도 getFile의 전체 설정을 건너 뛰십시오.

+0

감사합니다. 주머니 나 무언가 안에 옵션이 있는지 궁금해. 두 개의 다른 put() 함수를 사용해 보겠습니다. – thomagron

+0

PouchDB와는 아무런 관련이 없습니다.'getFile.type'과 같은 코드는'getFile'이'null'이면 작동하지 않습니다. – smathy