【问题标题】:Postman hangs while making a node.js requests邮递员在发出 node.js 请求时挂起
【发布时间】:2019-05-12 21:42:07
【问题描述】:

我正在使用邮递员向我的 node.js API 发出请求,我正在使用我的订单路由向我的订单控制器发送请求。无论我使用我的订单路线提出什么申请,我的申请都会挂起,而不是收到 400 或 500 响应,我的邮递员卡在加载屏幕上,并且在一段时间后超时。我也尝试过使用 google chrome 扩展程序,结果相同。申请不成功后收到如下消息

我想知道这是否与我在后端进行路由的方式有关,但我不确定。因此,这是我的代码:

model.js:

'use strict';

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const schema = new Schema({
    customer: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Customer'
    },
    number: {
        type: String,
        required: true
    },
    createDate: {
        type: Date,
        required: true,
        default: Date.now
    },
    status: {
        type: String,
        required: true,
        enum: ['created', 'done'],
        default: 'created'
    },
    items: [{
        quantity: {
            type: Number,
            required: true,
            default: 1
        },
        price: {
            type: Number,
            required: true
        },
        product: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Product'
        }
    }],
});

module.exports = mongoose.model('Order', schema);

在我的 order-controller.js 中发布方法:

exports.post = async(req, res, next) => {
    try {
        const token = req.body.token || req.query.token || req.headers['x-access-token'];
        const data = await authService.decodeToken(token);

        await repository.create({
            customer: data.id,
            number: guid.raw().substring(0, 6),
            items: req.body.items
        });
        res.status(201).send({
            message: 'Order registered with success!'
        });
    } catch (e) {
        console.log(e);
        res.status(500).send({
            message: 'Fail to process your requisition'
        });
    }
};

order-repository.js:

'use strict';
const mongoose = require('mongoose');
const Order = mongoose.model('Order');

exports.get = async(data) => {
    var res = await Order
        .find({}, 'number status customer items')
        .populate('customer', 'name')
        .populate('items.product', 'title');
    return res;
}

exports.create = async(data) => {
    var order = new Order(data);
    await order.save();
}

order-route.js:

'use strict';

const express = require('express');
const router = express.Router();
const controller = require('../controllers/order-controller');
const authService = require('../services/auth-service');

router.get('/', authService.authorize, controller.get);
router.post('/', authService.authorize, controller.post);

module.exports = router;

【问题讨论】:

  • 授权服务是什么样的?提供这部分代码可以让我们查看中间件是否设置正确

标签: javascript node.js api postman


【解决方案1】:

如果您正在调试您的 nodejs 服务器并且它在断点上被捕获,则可能会发生这种情况。如果是这样,响应将挂起。要修复它,只需禁用该断点,重新启动 nodejs 服务器,然后使用 Postman 再次发出请求。

【讨论】:

    【解决方案2】:

    也许您在邮递员中使用的是 GET 请求而不是 POST 请求。 确保它们符合类型。

    【讨论】:

    • 当您使用 postman 调用托管 GET 的后端端点,但您使用 POST 时,只会从 express 中获得以下信息。这个问题需要我们更多地了解代码,才能弄清楚为什么它可能会挂起。 Error
      Cannot POST "your endpoint here "
    猜你喜欢
    • 2021-11-07
    • 2021-03-08
    • 2020-12-25
    • 1970-01-01
    • 2020-11-15
    • 2016-07-09
    • 1970-01-01
    • 2022-01-23
    • 2020-11-16
    相关资源
    最近更新 更多