我正在为我的项目使用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个字段,它会再次复制所有结果。
答案 0 :(得分:0)
好的我还找到了另一个可以修复它的SO答案,但目前尚不清楚这是否真的是一个错误:
app.use(compression());
如果使用angular-fullstack,则从express - \openshift\server\config\express.js
中删除此行不会在浏览器中复制结果。
我已使用curl
和Chrome中的Postman应用测试了API。这两个测试不会返回重复项。
这个bug似乎是在浏览器中对数据的解释。在看到这些独立结果后,我很高兴继续在快递中使用compression()
。