2017-03-22 14 views
0

私は情報アイテムを格納するためのアプリを構築しています。現在、3つの入力フィールド(タイトル、説明、ファイル入力)があります。添付ファイルを追加せずにPouchDBコードが動作しない

3つのフィールドをすべて入力してaddItem()関数を呼び出すと、機能します。しかし、入力フィールドを空のままにしておくと、関数はそれをデータベースに追加しません。

ファイル入力フィールドが必須ではないことを伝える方法はありますか?

私のjavascriptのコード:

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

2番目の行(inputFile.files[0])は、ファイルを提供しない場合でも機能します。いずれにしても、ファイルがない場合はgetFile.typeメソッド呼び出しが失敗すると確信しています。

このメソッドでは、ファイルが提供されているかどうかに基づいて2つの異なる処理が行われるようにロジックが必要です。 1つがあればそれはあなたが持っているものを行い、存在しなければ_attachmentsを追加しようとせず、おそらくgetFileという設定全体をスキップします。

+0

ありがとうございます。袋や何かの中にオプションがあるのか​​不思議です。私は2つの異なるput()関数を使用しようとします。 – thomagron

+0

PouchDBとは何の関係もありません。 'getFile.type'のようなコードは、' getFile'が 'null'の場合には動作しません。 – smathy

関連する問題