Estoy aprendiendo el entorno de pila MEAN y tengo una pregunta.
Tengo una página de registro, que registra al usuario en MongoDB:
// register.component.ts register(){ this.http.post('http://localhost:3001/register', this.input) .subscribe( ( next: any) => { // TO-DO Success event }, ( error: any) => { // TO-DO Error event }); } // app.js app.post('/register', function(req, res){ db.collection('users').insertOne({ prenom : req.body.prenom, nom: req.body.nom, email : req.body.email, password : req.body.password }) })Funciona bastante bien, el problema es que para la conexión uso el _id:
// login.component.ts login(id: string){ this.http.get('http://localhost:3001/login/' + id).toPromise().then((data: any) => { this.users = data }) sessionStorage.setItem('id', id) } // app.js app.get('/login/:id', function(req, res){ db.collection('users').findOne({ email: ObjectId(`${req.params.id}`)}, function(err, user){ if (err) throw err; if (!user) { console.log('User not found') } else if (user) { console.log('Found user: ' + user.prenom) } }) })Cómo asegurarme de que cuando el usuario se registre, me devuelva su _id directamente, y así pueda ponerlo en sesión:
sessionStorage.setItem('id', id)La función db.collection.insertOne() devuelve el documento insertado, consulte aquí . Esto significa que puede hacer una devolución de llamada o async/await (lo que prefiera) para su función insertOne() y luego devolver el _id usando la función Express res.json() . En su interfaz, obtendrá el contenido que coloque en res.json() como respuesta. ¡Feliz codificación! :)