I am trying to create a E-commerce project using MERN stack and was wondering. How to go about creating a cart for a user. I have currently user and products route and model set-up and have created a model for cart which has a id field referring back to the user.
My confusion is how to go about defining the routes for this cart in a RESTful way and how to go about linking the cart to the user.
Should the route be like /carts/:id or should the route be declared inside the User routes and the route would be something like /users/me/cart ?
If the user is signing up. How should the cart be linked to the user. Should it be created at the time user is getting created, like below. or how to go about creating it and linking it to the user. This is confusing to me since the route should be only defined for specific task and here we are using the /users route to also do cart creation.
// Create user
router.post('/users', async (req, res) => {
const user = new User(req.body);
const cart = new Cart({ owner: user._id });
try {
await user.save();
await cart.save();
const token = await user.generateAuthToken();
res.status(201).send({ user, token, cart_id: cart._id });
} catch (e) {
res.status(500).send(e);
}
});
Also, What would be the best practices to handle this type of situation?
Any documentation or suggestions will be appreciated. Thanks for your help in advance!