Reto
En order.router.js
En el body se enviaría el sub del payload como body.
// POST
router.post('/',
passport.authenticate('jwt', { session: false }),
async (req, res, next) => {
try {
const body = {
userId: req.user.sub
}
const newOrder = await service.create(body);
res.status(201).json(newOrder);
} catch (err) {
next(err);
}
}
);
Luego en order.service.js Modificamos el create() para que la inserción sea automatizada con solo enviar el sub o userId, hacemos una busqueda findOne al customer Where user .id sea igual a data.userId. Donde este se almacenará en customer el cual tendremos que extraer el ID para enviarlo al create de order. Si no se encuentra se regresa un no encontrado.
async create(data) {
const customer = await models.Customer.findOne({
where: {
'$user.id$': data.userId
},
include: ['user']
})
if (!customer) {
throw boom.badRequest('Customer not found');
}
const newOrder = await models.Order.create({ customerId: customer.id });
return newOrder;
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?