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!
Firebase Cloud Functions: PubSub, "res.on is not a function"
TypeError: Cannot read properties of undefined (reading 'createMessageComponentCollector')
I'm trying to simulate clicking on an element that is rendered after a certain iteration of documentreadyState='complete'
so I need to download a file from S3 bucket and then, with either its buffer or readStream, append it to a FormData on nodeI've tried different libraries such as formdata-node, isomorphic-form-data and form-data
my nodejs module starts a server on a specific port, I am wondering if it is a way to stop the execution of that server in my mocha test:
I need to executemjs script about 200 times with another parameters (changableParametr):