【发布时间】: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