2016-09-06 104 views
1

使用MEAN.JS.路線:使用ID(ExpressJS)發送GET請求的錯誤請求

app.route('/api/user/cards/:cardId') 
    .get(card.read); 
app.param('cardId', card.cardByID); 

cardByID:

exports.cardByID = function (req, res, next, id) { 
     Card.findOne({id: id}).exec(function (err, card) { 
     if (err) return next(err); 
     if (!card) return res.status(404).send({message: 'Карты с таким ID не найдено'}); 
     req.card = card; 
     next(); 
    }); 
    }; 

我以前用貓鼬_id作爲PARAM,但需要使用其他ID(8位)。 如果id是mongoose id類型(例如57ceda7ec10c15da7c53515f),它將返回404狀態,但如果id只是一個數字(例如13241234),它將返回400狀態。 問題是什麼?

回答

1

由於MongoDB表示default unique identifier作爲文檔的主鍵_idObjectId


而且這通常表示爲24 character hex string12-byte binary值。

每當MongoDB獲得小於24 characters不接受,作爲_id。這就是爲什麼你從MongoDB方得到一些error方。

+0

沒錯,但我不是通過'_id'字段搜索的,我用'id'搜索,它也是唯一的。它曾經工作,但經過一些改變,它被壓制,我不明白什麼是錯的。 – Eugene

+0

你可以顯示你的單一文件的集合?並且還會顯示你在'err'變量中得到的錯誤 – abdulbarik