2017-10-20 7 views
-1

私はCouch.dbにデータベースを作成しました。ドキュメントデータを取得するためにcouch.GETメソッドを使用しています。私は "name"オブジェクトの値を取得し、console.logを通して結果を出力するテスト関数を作成しました。関数がJSONプロパティの値を返さない - node.js

function sendDB() { 
    couch.get(dbName, viewUrl).then(
     function(data, headers, status){ 
      console.log(data.data.rows[0].value.name); 
     } 
    ) 
} 

sendDB(); 

上記の関数では、出力は 'John Doe'である必要があります。私がしようとすると上記の関数ではdata.data.rows[0].value.name

function sendDB() { 
    couch.get(dbName, viewUrl).then(
     function(data, headers, status){ 
      DB = JSON.stringify(data.data.rows[0].value.name); 
      return DB; 
     } 
    ) 
} 

console.log(sendDB()); 

の値を返すときに問題が発生し、コンソールは、「未定義の」読み、私はかなり混乱しています。私は他の関数で返された値を使用する必要がありますので、どんな助けでも大歓迎です。ありがとう

+0

にチェーンを使用する必要が非同期であるので、 、ステータス) '。その関数は 'then'に渡されているので、他の約束と同様に、ただ一つの引数しか持たないでしょう。この特定のAPIは、3つのプロパティ、 'data'、' header'および 'status'を含むオブジェクトを渡します。いくつかの 'node-couchdb'の例では、' function({data、headers、status}) 'などの構造化を使って、そのオブジェクトを引き離しています。コードに欠けている中カッコに注意してください。旧バージョンのNodeを使用している場合は、非構造化をサポートしていない可能性があります。 – skirtle

答えて

1

sendDB()から約束を返す必要があります。現在、外部機能にはreturnはありません。

約束は、あなたがthen()これはあなたの質問に答えるものではありませんが、あなたの関数の引数、 `関数(データ、ヘッダの問題を持っている関数呼び出し

function sendDB() { 
    // return the promise 
    return couch.get(dbName, viewUrl).then(
     function(data, headers, status){ 
      DB = JSON.stringify(data.data.rows[0].value.name); 
      return DB; 
     } 
    ) 
} 
sendDB().then(function(DB){ 
    console.log(DB); 
}); 
+0

私は外部関数にreturnステートメントを入れ、あなたが書いたときに関数を呼び出しましたが、 'プロパティを読み取れません'と 'undefined'というエラーが出ました。私は初心者ですので、私の質問が悪い場合はお詫び申し上げます。ありがとう! – sickguy125

+0

couch.getステートメントの外側に書かれたリターンを見ていないのが悪い – sickguy125