MongoDB使用Mongoose和angular-fullstack复制结果

时间:2015-04-23 10:23:18

标签: mongodb mongoose angular-fullstack

我正在为我的项目使用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个字段,它会再次复制所有结果。

1 个答案:

答案 0 :(得分:0)

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

app.use(compression());

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

我已使用curl和Chrome中的Postman应用测试了API。这两个测试不会返回重复项。

这个bug似乎是在浏览器中对数据的解释。在看到这些独立结果后,我很高兴继续在快递中使用compression()