Estoy creando una aplicación simple usando MEAN stack. Mi código funciona bien, pero quiero eliminar una clave de la respuesta. Por favor, mire mi ocde.
modelos/usuario.js
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const userSchema = new Schema({ firstName: String, lastName: String, email: String, //password: String, // <--------- commented out userid: String, skills: [] }) module.exports = mongoose.model('user', userSchema, 'users'); Tenga en cuenta que he comentado la clave de password . Pero supongo que eso no es suficiente. Como todavía puedo ver la contraseña en respuesta:
Captura de pantalla del cartero
(Nota: la identificación de correo electrónico y la contraseña cifrada en esta imagen son absolutamente falsas y, por lo tanto, no hay ningún problema de seguridad)
api.js
const User = require('../models/user'); ... router.get('/users', function (req, res) { console.log('Get request for all users'); User.find({}) .exec(function (err, user) { if (err) { console.log("Error retrieving users"); } else { res.json(user); } }); }); Ahora, mañana cuando usaré el correo electrónico y la contraseña reales, aunque cifraré la contraseña, pero aún así no quiero mostrar la clave de la password en absoluto. Tampoco debe mostrarse en la pestaña de red del navegador.
Por favor dame algunas direcciones.
Puede usar el método de select de mongoose para excluir ciertos campos. https://mongoosejs.com/docs/api.html#query_Query-select
User.find({}) .select('-password') .exec(function (err, user) { if (err) { console.log("Error retrieving users"); } else { res.json(user); } });Puedes probar esto:
const User = require('../models/user'); ... router.get('/users', function (req, res) { console.log('Get request for all users'); const user = User.find({} , {password:0}); return res.json({ user: user }); });Si simplemente no desea mostrar la contraseña al generar los datos, solo necesita hacer esto en su esquema:
const MongooseSchema = new mongoose.Schema({ firstName: { type: String, required: [true, 'Please enter a first name!'], }, lastName: { type: String, required: [true, 'Please enter a last name!'], }, email: { type: String, unique: true, required: [true, 'Please enter an email address!'], match: [ /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, 'Please enter a valid email address', ], }, password: { type: String, required: [true, 'Please enter a password'], select: false, }, // userid: String, Id for user will be created by mongodb automatically skills: { type: Array, required: [true, 'Please enter skills!'], }, createdAt: { type: Date, default: Date.now, }, }); module.exports = mongoose.model('User', MongooseSchema);Ahora, cuando encuentre usuarios o un usuario, no se devolverá una contraseña o contraseñas en la respuesta. También mejoré tu esquema.