2017-03-06 10 views
1

私はオブジェクトの配列(1つの大きなオブジェクトにカプセル化されています)をトラフから検索し、内部オブジェクトの1つだけを出力したいと考えています。PouchDBはオブジェクトの配列からオブジェクトを生成します

{ 
"_id": "5eaa6d20-2019-44e9-8aba-88cfaf8e02542", 
"data" = [ 
    { 
    "id": 1452, 
    "language": "java" 
    }, 
    { 
    "id": 18787453, 
    "language": "javascript" 
    }, 
    { 
    "id": 145389721, 
    "language": "perl" 
    }] 
} 

= 145389721 idの言語を検索する際PouchDBは、次の結果を返すために取得する方法:それでは、私はこのようになりますされPouchDBに挿入されたJSONを持っていると仮定してみましょう

{ 
    "id": 145389721, 
    "language": "perl" 
    } 

ありがとう!最も簡単な方法は上記のシナリオで

答えて

2

、typescriptですを使用して、一時クエリを記述することです。

 db.query((doc, emit) => { 
      for (let element of doc.data) { 
      if (element.id === 145389721) { 
       emit(element); 
      } 
      } 
     }).then((result) => { 
      for (let row of result.rows) { 
      console.log(row.key); 
      } 
     }) 

永久クエリを使用して、それはこのように見えただろう:

let index = { 
    _id: '_design/my_index', 
    views: { 
    "by_id": { 
     "map": "function(doc) {for (let element of doc.data) {emit(element.id, element); }}" 
    } 
    } 
}; 

// save it 
this.db.put(index).catch(error => { 
    console.log('Error while inserting index', error); 
}); 

//query it 
this.db.query('my_index/by_id', { startkey: 145389721, endkey: 145389721}).then(result => { 
    for (let row of result.rows) { 
    console.log(row.value); 
    } 
}).catch(error => { 
    console.log('Error while quering the database with an index', error); 
}); 
関連する問題