未设置id时,Mongoose findByID不返回错误

时间:2015-06-19 12:43:40

标签: node.js mongodb mongoose

我有一个带ID(_ID)的集合。

{
  "_id": ObjectId("5583df9da55f654609901eed"),
  "group": "Tomorrowland",
  "description": "Délire 2015 à Tomorrowland",
  "uid": [
    "5583df21a55f654609901eec",
    "5583e8ef9aeb31390bb50bf6"
  ],
  "pictures": [
    "1434705960113.jpg",
    "1434705974710.jpg",
    "1434706147177.jpg",
    "1434711007201.jpg"
  ],
  "__v": 0
}

如果进行查询(FindByID)并且我检查ID 1我得到一个错误(在这种情况下一切正常:id不存在)

现在如果我进行相同的查询并检查ID(5582a7f12686cf776a0daee5),我没有收到任何错误......但我的收藏中没有ID!

怎么可能?

以下是代码:

groupid = req.headers['groupid'];

Cloud.findById(groupid).exec(function(err, data)
{
  if(err){
    res.status(404);
    res.json('group not found');
  }
  else
  {
    // Do Stuff
  }
});

1 个答案:

答案 0 :(得分:0)

您需要将字符串_id转换为有效的Mongodb ID

var img = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG);

ImageFile imgduplex = null;
if(duplex)
   imgduplex = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG);

如果您使用Mongoose,您可以将字符串转换为_id为:

var mongo = require('mongodb'),
    BSON = mongo.BSONPure,
    groupid = new BSON.ObjectID(req.headers['groupid']);

Cloud.find({'_id': groupid}).exec(function(err, data)
{
  if(err){
    res.status(404);
    res.json('group not found');
  }
  else
  {
    // Do Stuff
  }
});