Me encuentro con un problema que parece que no puedo resolver durante las últimas horas. Hagámoslo.
Actualmente usando la versión más reciente de express y mongoose
Tengo la siguiente ruta con la consulta en mi route.js:
Note .findOne({"user": req.body.user, "title": req.body.title, "subtitle": req.body.subtitle}) .exec(function (err, note) { if (err) {handleError(err)}; console.log(note._id); }) //same implementation as the in the mongoose docs
Luego, tengo un script del lado del cliente con la siguiente solicitud ajax:
let settings = { type: 'GET', url: 'http://localhost:8080/note', data: { "user": userId, "title": noteTitle, "subtitle": noteSubtitle }, dataType: "json", success: renderGetNoteTemplate } return $.ajax(settings);
Ahora el problema es que, incluso cuando existe un documento en la base de datos y la colección correcta, el resultado de la consulta es nulo. Y después de horas de leer hilos en este sitio y también iniciar sesión en la consola, ¡decidí registrar la consulta en la consola y vi esto!
_conditions: { subtitle: null, title: null, user: null }
Entonces, la condición que se pasa es nula, lo que obviamente devolverá nulo. Ahora, aquí está el truco. Las consultas funcionan con condiciones como:
Note.findById(req.cookies.note).exec()
La diferencia que pude ver allí es que la solicitud no proviene del cuerpo. Así que arriba envié las condiciones a través de la solicitud de ajax con algo como
{"title": req.body.title}
Por último, cuando imprimo req.body.title, etc. en la consola sin pasarlo a la consulta, aparecen los valores. Entonces, por ejemplo, paso Romeo y Julieta como el título de la nota, cuando lo imprimo en la consola del servidor, obtengo el valor Romeo y Julieta. Tan pronto como lo paso a la consulta como condición, surge el problema.
He buscado literalmente en todas partes, especialmente en la forma en que nombré mis modelos, etc. Nuevamente, cuando paso el argumento req.body a la condición, obtengo el resultado nulo.
También en aras de la brevedad, no incluí en el código que he requerido bodyParser y, de nuevo, los valores aparecen cuando no entran en la condición de consulta.
¿Alguna idea de qué hace que estos argumentos se vuelvan nulos?
Gracias
Debería ser req.query
en lugar de req.body
o req.params
porque es una solicitud GET
.
GET /note?user=some&title=some&subtitle=some