So, I am trying to check whether there is a user or not I have the following code:
const userExist = await User.find({ username: req.body.username });
if (userExist)
return res.status(400).send({ message: "User already exists" });
but even if the user doesn't exist it still gives the error User already exists
and the userExists object return []
So, I am trying to check whether there is a user or not I have the following code:
const userExist = await User.find({ username: req.body.username });
if (userExist)
return res.status(400).send({ message: "User already exists" });
but even if the user doesn't exist it still gives the error User already exists
and the userExists object return []
-
Use
User.findOne
instead ofUser.find
– Arif Khan Commented Dec 1, 2021 at 7:53 - @Shahab Make sure to use findOne. find method goes through the entire database to find as many records as possible whereas findOne stops as soon as it finds the first match. – Molda Commented Dec 1, 2021 at 8:24
3 Answers
Reset to default 3Another way to verify if the user exists is to use mongoose .exist()
. If at least one document exists in the database that matches the given filter, and null otherwise
Read more here .exists
`
const userExist = await User.exists({ req.body.username });
if (userExist)
return res.status(400).send({ message: "User already exists" });
`
The reason is []
is true in Javascript
. You need to check the length and check if there is some data in an array.
const userExist = await User.find({ username: req.body.username });
if (userExist.length > 0)
return res.status(400).send({ message: "User already exists" });
For future references, all the below values are truthy in JS.
if (true)
if ({})
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)
Note: Remend you to check this link.
u can use const user = await User.findOne({ username: req.body.username });
this get only one and u can check !user