Estoy tratando de realizar un formulario de registro en Mongo Node.js y Express.js . Ya he completado la tarea que inserta un documento en la colección de usuarios para un nuevo usuario. Pero necesito crear una validación si existe un usuario basado en el nombre de usuario o el correo electrónico como claves.
Por ejemplo, envío un usuario: { "_id": { "$oid": "62ac54c4cd1c80d0e8e2f68a" }, "firstName": "test", "lastName": "test", "email": "test@test.com", "password": "test", "username": "test"}
Si trato de enviar los mismos créditos en el formulario de registro, mi API falla por completo con el código de error:
db.collection(...).exists is not a functionNota : estoy usando mangosta
Código:
app.post("/login", async (req, res) => { const firstName = req.body.firstName; const lastName = req.body.lastName; const email = req.body.email; const password = req.body.password; const username = req.body.username; var data = { "firstName": firstName, "lastName": lastName, "email": email, "password": password, "username": username } console.log(data); let userExist = await db.collection('users').exists({ "username": username, "email": email }) console.log(userExist); if (userExist) { console.log("User already exists"); return res.render('login'); } else { db.collection('users').insertOne(data, function (err, collection) {if (err) throw err;}); } res.render('login', { 'data': data }); });¿Algunas ideas?
Veo que está tratando de encontrar si el usuario existe en la colección a través de dos campos que son nombre de username y email .
Con mongoose, en realidad podría hacerlo de muchas maneras y el mejor enfoque es definir su modelo, https://mongoosejs.com/docs/models.html
Si desea seguir con su caso, puede probar esto:
db.collection('users').find({ "username": username, "email": email })