• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

251
Views
mangosta extrae datos específicos de un solo documento

Así que estoy usando mongoose y mongo atlas. Tengo un solo documento con una estructura de la siguiente manera:

 {_id: ObjectId("3u3ui4t432) , name: cat1, items : [ {cat1_item1: "something"}, {cat1_item2: "something"} ]} {_id: ObjectId("3u3uir3bi2) , name: cat2, items : [ {cat2_item1: "something"}, {cat2_item2: "something"} ]}

Actualmente, este punto final recupera el documento completo, solo estoy tratando de acceder a una categoría a la vez en función de un parámetro, ya sea URL o cuerpo.

 //this gets the specific document i want, but i would prefer to get that document through something like this. // findOne({ category: req.body.category }) app.post('/targetCategory', async (req, res) => { const categoryName = req.body.category categoryCollection.findOne({ _id: "62b9353730ac42a7d390f5ad" }, (err, data) => { if (err) { console.log(err) } else { res.send(data) console.log(categoryName) } }) })
 const mongoose = require('mongoose') const Schema = mongoose.Schema; const categorySchema = Schema({ categories: { } }) module.exports = mongoose.model('categoryCollection', categorySchema)

Básicamente, quiero usar parámetros (?) para acceder solo a una categoría a la vez para minimizar los datos enviados a la interfaz. ¿Cómo hago para usar algo como findOne() con el parámetro categoría 1 o categoría 2, ya que solo quiero la matriz dentro? Estoy usando mongoose, node y express.

about 3 years ago · Juan Pablo Isaza
2 answers
Answer question

0

modelo

 const mongoose = require('mongoose') const Schema = mongoose.Schema; const categorySchema = Schema({ name: String, // items placeholder, modify if required items: String[] }) const Category = mongoose.model('Category', categorySchema) module.exports = Category

el controlador que puedes usar

 app.post('/listOne', async (req, res) => { try { const categoryData = await Category.findOne({name: req.body.category}) res.send({category: categoryData}) } catch (e) { console.log(e) } })

otra solución de controlador que sugiero

 app.get('/category/:name', async (req, res) => { try { const categoryData = await Category.findOne({name: req.params.name}) res.send({category: categoryData}) } catch (e) { console.log(e) } })
about 3 years ago · Juan Pablo Isaza Report

0

Para encontrar datos únicos en la colección, puede usar esta función o leer esto en los documentos de mongoose https://mongoosejs.com/docs/api.html#model_Model.findOne

 // Find one adventure whose `country` is 'Croatia', otherwise `null` await Adventure.findOne({ country: 'Croatia' }).exec(); // using callback Adventure.findOne({ country: 'Croatia' }, function (err, adventure) {}); // select only the adventures name and length await Adventure.findOne({ country: 'Croatia' }, 'name length').exec();

y para obtener el parámetro en express puedes usar esto

 app.get('/users/:userId/books/:bookId', (req, res) => { res.send(req.params) })
about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error