来自 db 的响应是偏移量,不是所有使用 map 函数返回的结果

Response from db is offset, not all results returned using map function

为什么是offset: 1

我希望在 Cloudant 的响应中看到 2 rows,如 total_rows 所示,但由于某种原因它的偏移量因此只有 1 行出现在响应中。

控制台输出:

{ 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());

函数定义:

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);
      }
    });
  });
};

Cloudant 中定义的视图:

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

查看提供给 view() 函数的键:

1e0a2d30d18d95b9bcc05d92c883d496
1e0ad30d18d95b9bcc05d92c883e272

第二个键短了一个字符 - 它只有 31 个字符,而不是 32 个。我猜你只是在从文档 ID 复制粘贴时错过了最后一个字符。

删除键参数以查看所有行,然后检查第二行的正确键并更新您的代码。