node.js中的错误处理

时间:2012-02-21 17:21:34

标签: node.js mongodb

我想使用URI片段作为源创建mongoID。但是,除非URI确实包含格式正确的mongoId,否则会抛出以下错误。

我应该更改哪些内容以允许_id创建而不会抛出错误,因为将其包装在try/catch块中不会这样做?

错误:

  

500错误:传入的参数必须是12个字节的单个字符串或a   十六进制格式的24个十六进制字符的字符串

代码:

var _id = db.bson_serializer.ObjectID.createFromHexString(req.params.id);

this.db.users.findById(_id, function(err, doc) {
    if (!err && !!doc) { res.send(JSON.stringify(doc)); } else {res.send(JSON.stringify({error: "Not found"));}
});

我使用mongoskin驱动程序。

1 个答案:

答案 0 :(得分:2)

这一行引发了错误:

var _id = db.bson_serializer.ObjectID.createFromHexString(req.params.id);

如果你将它包装在try / catch块中,它应该可以工作。

var _id = null
try {
  _id = db.bson_serializer.ObjectID.createFromHexString(req.params.id);
} catch (err) {
  res.send(JSON.stringify({error: "Not found"}));
  return;
}

this.db.users.findById(_id, function(err, doc) {
  if (!err) { 
    res.send(JSON.stringify(doc)); 
  } else {
    res.send(JSON.stringify({error: err.message}));
  }
});

这对你有用吗?