Soy bastante nuevo en express-js, por lo que esta pregunta puede parecer tonta, pero he estado buscando y no puedo encontrar una respuesta elegante.
Para una ruta dada que maneja un método de publicación o colocación, quiero poder eliminar todas las propiedades no especificadas. Por ejemplo, si hay una solicitud posterior para crear un obj como:
{ title: "some title", user: "some user", body: "post body", _id: "1332433242343", }Quiero poder tener un middleware que solo tome las propiedades que necesito, como:
(req, res, next) => { const { title, user, body } = req.body; clean_request = { title: title, user: user, body: body, }; }El motivo es que un agente no malicioso podría manipular los datos de la base de datos interna, ya que la base de datos utiliza la propiedad _id y el solicitante puede establecerla.
Estoy usando express-validate para validar y desinfectar mis propiedades, pero hasta ahora no he encontrado una manera de poder eliminar las propiedades por completo y mantener solo las que necesito.
Gracias de nuevo por cualquier consejo. ^^
al final del día, terminé escribiendo mi propio software intermedio para colocar propiedades no deseadas en el cuerpo del requisito:
allowed_properties = { username: true, lastname: true, firstname: true, condition: true, image: true, password: true, email: true, } const cleanProperties = (req, res, next) => { /* clean the json of any unwanted properties */ const clean_json = {} Object.keys(req.body).forEach( property => // for property allowedProperties[property] && // if is make as acceptable (clean_json[property] = req.body[property]) // pass to new obj ); req.body = clean_json; next(); }