错误的请求发送带有id(ExpressJS)的GET请求

使用MEAN.JS. 路线:

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

我曾经使用mongoose_id作为参数,但需要使用其他身份证(8位数字)。 如果id是mongoose idtypes(例如57ceda7ec10c15da7c53515f),它将返回404状态,但是如果id只是一个数字(例如13241234),它将返回400状态。 问题是什么?

正如MongoDB所说,为文档生成主键_iddefault unique identifier是一个ObjectId


它是12-byte binary值,通常表示为24 character hex string

而且每当MongoDB得到less于24 characters它不接受作为_id 。 这就是为什么你从MongoDB端获得一些error