2012-02-21 92 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嗎? – 2012-02-21 17:24:08

+0

'/ users/nonvalidid' - 拋出錯誤。 '/ users/47cc67093475061e3d95369d' - 有效。 – Industrial 2012-02-21 17:26:09

回答

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

這是否適合您?