我想使用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
驱动程序。
答案 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}));
}
});
这对你有用吗?