En mi aplicación express node.js estoy recuperando un usuario de mi base de datos
const newUser = await User.create({ username, password, email, avatar, })pero antes de enviar la respuesta con el objeto de usuario quiero eliminar la contraseña.
delete newUser.password; return res.status(200).json({ token, user: newUser });pero en mi respuesta se devuelve la contraseña.
console.log(JSON.stringify(newUser)) devuelve:
{"_id":"11111111","username":"dylan","email":"dylan@email.com","admin":true,"password":"******"}el valor de retorno de la consulta es un documento, no un objeto javascript
toObject que convierte el documento mangosta en un objeto JavaScript simple.delete en cada propiedad que desee también con mongoose se puede hacer de manera más adecuada y automática
User.methods.toJSON = function () { const user = this; const userObj = user.toObject(); delete userObj.password; return userObj; }; cada vez que envía este documento como respuesta, se convierte a JSON y cada vez que JSON.strigify() llama a un documento, llama a este toJSON()
Tal vez también puedas hacer
delete newUser._doc.password