【问题标题】:Bad request sending GET request with id (ExpressJS)发送带有 id 的 GET 请求的错误请求(ExpressJS)
【发布时间】:2017-01-14 04:20:05
【问题描述】:

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

我以前使用猫鼬_id作为参数,但需要使用其他id(8位)。 如果 id 是 mongoose id 类型(例如 57ceda7ec10c15da7c53515f),它返回 404 状态,但如果 id 只是一个数字(例如 13241234),它返回 400 状态。 有什么问题?

【问题讨论】:

    标签: node.js mongodb express mongoose mean


    【解决方案1】:

    正如MongoDB 所说,作为文档主键_id 生成的default unique identifierObjectId


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

    并且每当MongoDB 小于24 characters 时,它不接受_id。这就是为什么你会从MongoDB 方面得到一些error

    【讨论】:

    • 对,但我不是按字段“_id”搜索,而是按“id”搜索,它也是唯一的。它曾经可以工作,但经过一些更改后它崩溃了,我无法理解出了什么问题。
    • 你能展示你的一个集合文件吗?并显示您在err 变量中遇到的错误
    猜你喜欢
    • 2021-12-19
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2020-04-01
    • 2020-10-31
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多