Estoy tomando un curso de capacitación, en Udemy, y ya tenía un código backend escrito, ya que el curso es puramente sobre desarrollo frontend. Utiliza una base de datos MongoDB muy simple que creé. Determiné que MongoDB versión 4.0.10 está instalado en mi computadora, en caso de que sea relevante. Al intentar realizar una consulta de registros coincidentes, aparece el siguiente error:
UnhandledPromiseRejectionWarning: MongoError: los nombres de campo de FieldPath pueden no comenzar con '$'. en MessageStream.messageHandler (I:\DEV\Training\React For the Rest of Us\backend-api\node_modules\mongodb\lib\cmap\connection.js:268:20) en MessageStream.emit (events.js:315: 20) en processIncomingData (I:\DEV\Training\React For the Rest of Us\backend-api\node_modules\mongodb\lib\cmap\message_stream.js:144:12) en MessageStream._write (I:\DEV\Training \React For the Rest of Us\backend-api\node_modules\mongodb\lib\cmap\message_stream.js:42:5) en writeOrBuffer (internal/streams/writable.js:358:12) en MessageStream.Writable.write ( interno/streams/writable.js:303:10)
en TLSSocket.ondata (interno/streams/readable.js:719:22) en TLSSocket.emit (events.js:315:20) en addChunk (internal/streams/readable.js:309:12) en readableAddChunk (interno/ streams/readable.js:284:9) (nodo:51960) UnhandledPromiseRejectionWarning: Rechazo de promesa no controlado. Este error se originó al lanzar dentro de una función asíncrona sin un bloque catch o al rechazar una promesa que no se manejó con .catch(). Para finalizar el proceso del nodo en caso de rechazo de la promesa no controlada, utilice la marca CLI--unhandled-rejections=strict(consulte https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode ). (ID de rechazo: 2) Después de buscar en el código de back-end, encontré el siguiente código que se usa para realizar la consulta/búsqueda, y noté que hay símbolos $ en varios lugares.
Post.search = function(searchTerm) { return new Promise(async (resolve, reject) => { if (typeof(searchTerm) == "string") { let posts = await Post.reusablePostQuery([ {$match: {$text: {$search: searchTerm}}}, {$sort: {score: {$meta: "textScore"}}} ]) resolve(posts) } else { reject() } }) }¿Qué es exactamente lo que está mal y cómo lo soluciono?
Idéntico error aquí. Buscar desde reaccionar usando axios en la aplicación principal, muy simple (se supone que debe ser). Es indicativo de que, en mi caso, cuando intento buscar "abrir modo de búsqueda" desde reaccionar, el servidor mongodb se bloquea con el error mencionado:
f:\PrgsReact\SimplePost\backend-api\node_modules\mongodb\lib\cmap\connection.js:268 callback(nuevo MongoError(documento));
MongoError: los nombres de campo de FieldPath pueden no comenzar con '$'.
etc..
Intenté cambiar la versión npm de mongodb y axios, entre otras cosas. Gracias.