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