Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

337
Vistas
Node.js find () en la definición del modelo Mongoose

Quiero definir un método en mi modelo que implique buscar en los documentos del mismo modelo, esto es lo que probé:

 var mongoose = require('mongoose'); var Author = require('./author.js'); var bookSchema = mongoose.Schema({ author : { type: mongoose.Schema.Types.ObjectId, ref: 'author' }, genre: String, }); bookSchema.methods.findSimilar = function(callback) { bookSchema.find({'genre': this.genre}).exec(function doThings(err, doc){ /* ... */ }); }; module.exports = mongoose.model('book', bookSchema, 'book');

Sin embargo, obtengo TypeError: bookSchema.find is not a function .

También probé bookSchema.methods.find() , mismo resultado. ¿Cómo puedo arreglar esto?

Gracias,

Editar: inspirado por esta respuesta , también probé this.model('Book').find() , pero aparece un error similar: TypeError: this.model is not a function

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cambie su método a: (Supongo que ya exportó el libro modelo de su módulo de esquema.

 bookSchema.methods.findSimilar = function(callback) { this.model('Book').find({'genre': this.genre}).exec(function doThings(err, doc){ /* ... */ }); // Or if Book model is exported in the same module // this will work too: // Book.find({'genre': this.genre}).exec(function doThings(err, doc){ // /* ... */ // // }); };

El método estará disponible en la instancia de su modelo:

 var book = new Book({ author: author_id, genre: 'some_genre' }); // Or you could use a book document retrieved from database book.findSimilarTypes(function(err, books) { console.log(books); });

Ver documentación aquí .

EDITAR (esquema completo/código de modelo)

El código completo del esquema/modelo será el siguiente:

 var mongoose = require('mongoose'); var Author = require('./author.js'); var BookSchema = mongoose.Schema({ author : { type: Schema.Types.ObjectId, ref: 'Author' }, genre: String, }); BookSchema.methods.findSimilar = function(callback) { Book.find({genre: this.genre}).exec(function doThings(err, doc){ /* ... */ }); }; const Book = module.exports = mongoose.model('Book', BookSchema);

Ejemplo de uso:

 var book = new Book({ author: author_id, genre: 'some_genre' }); // Or you could use a book document retrieved from database book.findSimilarTypes(function(err, books) { console.log(books); });
over 4 years ago · Santiago Trujillo Denunciar

0

Olvidó escribir una nueva palabra clave, así que haga esto:

 var bookSchema = new mongoose.Schema({ author : { type: mongoose.Schema.Types.ObjectId, ref: 'author' }, genre: String, });

Salud:)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda