2012-02-21 18 views
0

URIフラグメントをソースとして使用してmongoIDを作成します。しかし、URIに実際に適切にフォーマットされたmongoIdが含まれていない限り、以下のエラーがスローされます。node.jsのエラー処理

ブロックでラッピングしてエラーをスローせずに_idを作成できるようにするにはどうすればよいですか?

エラー:

500 Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters in hex format

コード:

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

私はあなたがしようとしていることを理解していますが、サンプルURIを表示できますか? –

+0

'/ users/nonvalidid' - エラーをスローします。 '/ users/47cc67093475061e3d95369d' - 有効です。 – Industrial

答えて

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})); 
    } 
}); 

これは機能しますか?