c1t*_*enn 0 javascript mysql node.js postman
每次我尝试在邮递员中向http://localhost:3000/api/orders/new发送请求时
我收到此错误:**TypeError: 无法解构 'req.body' 的属性 'userId',因为它未定义。在 C:\Users\Web-Developer\Desktop\shoppy\backend\routes\orders.js:70:10 在 Layer.handle [as handle_request] (C:\Users\Web-Developer\Desktop\shoppy\backend\node_modules \express\lib\router\layer.js:95:5) 在下一个 (C:\Users\Web-Developer\Desktop\shoppy\backend\node_modules\express\lib\router\route.js:137:13) 在Route.dispatch (C:\Users\Web-Developer\Desktop\shoppy\backend\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (C:\Users\Web -Developer\Desktop\shoppy\backend\node_modules\express\lib\router\layer.js:95:5) 在 C:\Users\Web-Developer\Desktop\shoppy\backend\node_modules\express\lib\router\index .js:281:22 在 Function.process_params (C:
const router = express.Router();
const {database} = require('../config/helpers');
/* GET ALL ORDERS */
router.get('/', (req, res) => {
database.table('orders_details as od')
.join([
{
table: 'orders as o',
on: 'o.id = od.order_id'
},
{
table: 'products as p',
on: 'p.id = od.product_id'
},
{
table: 'users as u',
on: 'u.id = o.user_id'
}
])
.withFields(['o.id', 'p.title as name', 'p.description', 'p.price', 'u.username'])
.sort({id: 1})
.getAll()
.then(orders => {
if(orders.length > 0) {
res.status(200).json(orders);
} else {
res.json({message: 'Mo Orders Found'})
}
}).catch(err => console.log(err));
})
/* GET SINGLE ORDER */
router.get('/:id', (req, res) => {
const orderId = req.params.id;
database.table('orders_details as od')
.join([
{
table: 'orders as o',
on: 'o.id = od.order_id'
},
{
table: 'products as p',
on: 'p.id = od.product_id'
},
{
table: 'users as u',
on: 'u.id = o.user_id'
}
])
.withFields(['o.id', 'p.title as name', 'p.description', 'p.price', 'u.username'])
.filter({'o.id': orderId})
.getAll()
.then(orders => {
if(orders.length > 0) {
res.status(200).json(orders);
} else {
res.json({message: `No Orders Found with orderId ${orderId}`})
}
}).catch(err => console.log(err));
})
/* PLACE A NEW ORDER */
router.post('/new', (req, res) => {
let {userId, products} = req.body;
console.log(userId, products)
})
module.exports = router
Run Code Online (Sandbox Code Playgroud)
这是解决方案......yayyy!
不需要安装 body-parser。
尝试这个:
app.use(express.json())
Run Code Online (Sandbox Code Playgroud)
并在您的路线之前指定它,例如:
(顺序在这里真的很重要!)
app.use(express.json());
app.use('/api', Anyroute)
Run Code Online (Sandbox Code Playgroud)
app.use(bodyParser.json()) // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true }))
Run Code Online (Sandbox Code Playgroud)
我发现在指定路由路径之前需要使用此代码。
在我的server.ts我有
app.use('/admin', adminRoutes);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))
Run Code Online (Sandbox Code Playgroud)
这给出了错误消息。更改为
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))
app.use('/admin', adminRoutes);
Run Code Online (Sandbox Code Playgroud)
让它发挥作用。正如OP在评论中所说,顺序必须首先是主体解析器,然后是路径路径。
| 归档时间: |
|
| 查看次数: |
11757 次 |
| 最近记录: |