Estoy tratando de rastrear el número de descargas por clic en un sitio web.
servidor.js
router.post("/download", async (req, res) => { let id = req.body.id; id = parseInt(id); let doc = await db.findOneAndUpdate({_id: id}, {downloads: 100}); });Nota: Esto funciona
Pero estoy tratando de aumentar el número en 1 cada vez.
Por ejemplo : digamos que el número actual de descargas es 5, ¿cómo lo hago si hay una solicitud de publicación? El número de descargas aumenta en 1.
const { body: { id } } = req; const intCasetedId = parseInt(id); const retrievedDocument = await db.findOneAndUpdate({ id }, { $inc: { downloads: 1 } });Un par de cosas están sucediendo aquí.
Primero obtengo el valor de id del argumento req usando una asignación de desestructuración .
Solo uso const para asegurarme de no mutar los valores de las variables.
También utilizo la notación abreviada del valor de la propiedad del objeto para omitir la tecla '_id' en el argumento de la consulta de búsqueda. Citando la documentación de la mangosta:
Emite un comando de actualización mongodb findAndModify por el campo _id de un documento. findByIdAndUpdate(id, ...) es equivalente a findOneAndUpdate({ _id: id }, ...).
Luego estoy usando el operador '$ inc' para incrementar el campo de descargas en 1.
También le recomendaría encarecidamente que investigue sobre eslint.