0

我正在为我的项目使用 angular-fullstack 生成器。这真的很方便,因为它有助于搭建你的 API。

我在测试我的 API 时遇到了一个问题。如果我的 API 只返回几个结果,一切似乎都很好,但如果结果的大小很大,例如。超过100,则重复返回。这是我的一种查询方法。

Flight.find({pilot: req.params.pilot}, function (err, flight) {
   console.log("flight: ", flight.length); // returns correct number of results

   if(err) { return handleError(res, err); }
   if(!flight) { return res.send(404); }
     return res.json(flight);
});

例如只有 3 个时的返回结果是这样的:

[
  {
    "_id": "552edd6cfa67a54c302bf9b6",
    "pilot": "Austin",
    "__v": 0
  },
  {
    "_id": "552edd6cfa67a54c302bf9b7",
    "pilot": "Austin",
    "__v": 0
  },
  {
    "_id": "552edd6cfa67a54c302bf9b8",
    "pilot": "Austin",
    "__v": 0
  }
]

但是更大的数据集总是重复的,例如:

[
  {
    // imagine 100+ objects
  }
]
[
  {
    // imagine the exact same 100+ objects - with same ids as above 
  }
]

为什么会这样?当我直接从 MongoDB 终端检查总结果时,它具有正确数量的结果,在我上面的查询方法中的控制台日志中也是如此,但是浏览器中的结果在大型集合上重复。

更新:

我还发现,如果我限制返回的字段,我不会得到重复的结果。每个项目中大约有 10 个字段,如果我只显示名称,例如它不会重复,如果我添加大约 3 个字段,它会再次重复所有结果。

4

1 回答 1

0

好的,我还找到了另一个可以修复它的 SO 答案,但尚不清楚这是否真的是一个错误:

app.use(compression());

从 express 中删除这一行 -\openshift\server\config\express.js如果使用 angular-fullstack 将不会在浏览器中复制结果。

我已经使用curlChrome 中的 Postman 应用程序测试了 API。这两个测试不返回重复项。

该错误似乎存在于浏览器对数据的解释中。看到这些独立的结果后,我很高兴继续compression()在 express 中使用。

于 2015-04-23T10:55:45.743 回答