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

IはPARAMとしてマングースの_idを使用するために使用されるが、他のID(8桁)を使用する必要があります。 idがmongoose id type(例:57ceda7ec10c15da7c53515f)の場合は404ステータスを返しますが、idが単なる数値(ex。13241234)の場合は400ステータスを返します。 問題は何ですか?

答えて

1

MongoDBには、ObjectIdというプライマリキーとして_idが生成されていると記載されています。


そして、それはしばしば24 character hex stringとして表され12-byte binary値です。

そしていつでもMongoDB未満24 charactersそれは_idとしてそれを受け入れていないを取得します。だからこそ、errorMongoDBから手に入れたのです。

+0

私はフィールド '_id'で検索していますが、私は 'id'で検索していますが、それも一意です。それは以前から使われていましたが、いくつかの変更の後では壊れてしまい、何が間違っているのか理解できません。 – Eugene

+0

コレクションの単一のドキュメントを表示できますか? 'err'変数に入っているエラーを表示します – abdulbarik

関連する問題