Soy un principiante en mongodb y javascript.
Aquí tengo un código para el método de búsqueda simple en Mongodb Nodejs. Este código no funciona.
La solución es cambiar la última línea a esto: cursor.limit(10).toArray((err, docs) => console.log(docs)); .
Lo que no entiendo es por qué necesito incluir el argumento err aquí. Aquí está la documentación para el método toArray . No dice aquí que se necesita el parámetro err . ¿Cómo sabría que se necesita el argumento err aquí o en otros métodos?
¡Muchos gracias! Creo que este es un concepto muy básico y agradeceré cualquier aporte.
const client = new MongoClient(uri); client.connect() .then(() => { const db = client.db('sample_mflix'); const coll = db.collection('movies'); const cursor = coll.find(); cursor.limit(10).toArray((docs) => console.log(docs)); })En la documentación que vinculó, podemos ver que FindCursor.toArray tiene dos permutaciones de sintaxis válidas:
toArray(): Promise<TSchema[]>toArray(callback: Callback<TSchema[]>): void Dado que está utilizando el segundo, debemos consultar la documentación de Callback . Dice que solo hay una sintaxis válida:
Callback<T>: (error?: AnyError, result?: T) => void Debe incluir el parámetro de error para tener una devolución de Callback válida y debe tener una devolución de Callback válida para usar la toArray(:Callback) .
La forma habitual de transmitir que no le importa el valor de un parámetro es utilizar un guión bajo ( _ ) como nombre del parámetro.
const client = new MongoClient(uri); client.connect() .then(() => { const db = client.db('sample_mflix'); const coll = db.collection('movies'); const cursor = coll.find(); cursor.limit(10).toArray((_, docs) => { console.log(docs); }); }) Si quisiera usar la primera permutación (que devuelve una Promise ), se vería de la siguiente manera. Así es como ya está manejando MongoClient.connect .
const client = new MongoClient(uri); client.connect() .then(() => { const db = client.db('sample_mflix'); const coll = db.collection('movies'); const cursor = coll.find(); cursor.limit(10).toArray() .then(docs => { console.log(docs); }); })en realidad, los documentos dicen que debe pasar una devolución de llamada. ¿Ha comprobado qué argumentos toma esa devolución de llamada? sí, es error y resultado.
toArray(callback: Callback<TSchema[]>): void Callback<T>: (error?: AnyError, result?: T) => void