2012-02-21 2 views
0

Я хочу создать mongoID с использованием фрагмента URI в качестве источника. Однако, если URI действительно содержит правильно отформатированный mongoId, я получаю приведенную ниже ошибку.Обработка ошибок в node.js

Что я должен изменить, чтобы создавать _id без ошибок, так как обертывание в блок try/catch не делает этого?

Ошибка:

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/поймать блок, он должен работать.

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

Это работает для вас?

Смежные вопросы