2016-09-06 102 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