2016-05-17 2 views
0

offset: 1はなぜですか?dbからの応答がオフセットされています。マップ関数を使用してすべての結果が返されるわけではありません。

私は1行のみがレスポンス内に存在するtotal_rowsが示すように、Cloudantからの応答で2 rowsを見ることを期待し、そのいくつかの理由でオフセットです。

コンソール出力:

{ total_rows: 2, 
    offset: 1, 
    rows: 
    [ { id: '1e0a2d30d18d95b9bcc05d92c883d496', 
     key: '1e0a2d30d18d95b9bcc05d92c883d496', 
     value: [Object] } ] } 

関数を呼び出すと、応答を処理:

viewImpl('test', 'something').then(function(result) { 

    result.rows.forEach(function(doc) { 
    console.log(doc.value); 
    }); 

    res.status(200).send('done'); 
    } 
}).catch(someFunc()); 

機能DEF:Cloudantで定義されて

App.prototype.viewImpl = function(designName, viewName) { 
    return new Promise(function(fulfill, reject) { 
    _this.db.view(designName, viewName, { keys: ["1e0a2d30d18d95b9bcc05d92c883d496","1e0ad30d18d95b9bcc05d92c883e272"] }, function(err, result) { 
     if (err) { 
     reject(err); 
     } else { 
     fulfill(result); 
     } 
    }); 
    }); 
}; 

ビュー:

function(doc) { 
    emit(doc._id, { _id: doc._id, _rev: doc._rev, some_field: doc.some_field }); 
} 

答えて

1

view()機能を提供キーを見てみましょう:

1e0a2d30d18d95b9bcc05d92c883d496 
1e0ad30d18d95b9bcc05d92c883e272 

2番目のキーは1つの文字短い - それは、私はあなただけの最後の文字を逃したと思いますちょうど31文字の代わりに32のですコピー&ペーストをそれは文書IDからです。

キーのパラメータを削除してすべての行を表示し、次に2行目の正しいキーが何かを確認し、コードを更新します。

関連する問題