В моем коде есть 3 маршрута: для пользователей, для продуктов и для заказов. Я использую jwt и генерирую токены для пользователей, и я хочу назначать заказы Владельцам токенов. Вот моя модель заказа:
var mongoose = require('mongoose');
var orderSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId ,
product: {type: mongoose.Schema.Types.ObjectId, ref: 'Product'},
quantity: {type: Number , default: 1},
user_name: String
});
module.exports = mongoose.model('Order', orderSchema);
А вот мое промежуточное ПО для проверки аутентификации (оно импортировано как checkAuth):
module.exports = (req,res,next) => {
try {
var decoded = jwt.verify(req.headers.token, secretjwt);
req.userData = decoded;
next();
} catch (error) {
return res.status(401).json({
'error': 'Auth Failed',
'details': error.message
});
}
Вот мой пост api для добавления заказов: что я должен написать как user_name, чтобы назначить его пользователю (я не хочу получать имя пользователя в качестве параметра тела)?
router.post('/newOrder', checkAuth, (req,res,next) => {
var order = new Order({
quantity: req.body.quantity,
product: req.body.productId,
user_name: // WHAT SHOULD IT BE?
});
order.save()
.then(result => {
res.status(200).json(result);
})
.catch(err => {
res.json(200);
});
});
Заранее спасибо!





Вместо
req.userData = decoded put req.body.userData = decoded
И поместите user_name: req.body.userData в следующий фрагмент
router.post('/newOrder', checkAuth, (req,res,next) => {
var order = new Order({
quantity: req.body.quantity,
product: req.body.productId,
user_name: // WHAT SHOULD IT BE?
});
order.save()
.then(result => {
res.status(200).json(result);
})
.catch(err => {
res.json(200);
});
});