Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

311
Views
Nodejs mongodb devuelve una matriz vacía cuando no debería

tengo 2 colecciones en mongodb User y Review, los esquemas son User(_id,firstName,lastName,email,password) y Review(_id, reviewForID,reviewdByID,reviewText), tengo un método de publicación rápida que usaré para devolver el Usuario y todas las reseñas asociadas con ese usuario, pero cuando intento consultar la colección de reseñas, a veces me devuelven una matriz vacía. el error ocurre en la función getReviews(), he comentado la línea que causa el error. no sé qué está causando el error y por qué solo funciona cuando agrego toString()

nota: el propósito de la función getReview() es obtener la matriz de todas las revisiones de la base de datos y agregar esa matriz al objeto userA y luego enviar el objeto userA como respuesta al cliente

 var ObjectId = require('mongodb').ObjectID; //used to query objs by id //parameters are (userid) app.post('/getUserInfo', function (req, res) { var queryObj = { _id: new ObjectId(req.body.userid)}; MongoClient.connect(url, function (err, db) { if (err) { console.log('Unable to connect to the mongoDB server. Error:', err); } else //HURRAY!! We are connected. :) { var collection = db.collection('User'); collection.findOne(queryObj, function (err, resultDocument) { if (err) { console.log(err); } else if (resultDocument) { getReviews(resultDocument,res); } else { res.send({"result":"failed"}); } db.close();//Close connection });//collection.find end }//else });//MongoClient.connect end });//get user info end //find all the reviews and add them to the object userA function getReviews(userA,response) { //var queryObj = { reviewForID: userA._id }; returns empty array //var queryObj = { reviewForID: new ObjectId(userA._id) }; returns empty array //var queryObj = { reviewForID: userA._id.toString() }; returns correct documents MongoClient.connect(url, function (err, db) { if (err) { console.log('Unable to connect to the mongoDB server. Error:', err); } else //HURRAY!! We are connected. :) { var collection = db.collection('Review'); collection.find(queryObj).toArray(function (err, result) { if (err) { console.log(err); } else { response.send(result); } db.close();//Close connection });//coolection.find end }//else });//MongoClient.connect end }//get reviews end
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Parece que reviewForID en la colección Review es un campo de tipo String. En esa colección, el valor de la cadena se almacena, mientras que claramente en la colección User _id es del tipo ObjectId, por lo que no obtiene los datos porque hay una falta de coincidencia de tipos.

cuando se llama a toString, básicamente devuelve el valor de cadena que coincide con el tipo de cadena de reviewForID, por eso funciona con toString.

tal vez pueda almacenar reviewForID como tipo ObjectId para hacer una coincidencia directa.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!