tutorial español node.js mongodb mongoose

node.js - español - npm



Error de mangosta al crear el modelo(usando el paso) (3)

Entonces resulta que no soy del tipo observador,

mongoose.Model debe ser mongoose.model

Cuando intento crear un modelo en Mongoose, aparece el siguiente error

[TypeError: no se puede leer la propiedad ''options'' of undefined]

No tengo idea de qué lo está causando

"use strict"; var Step = require(''step''); var mongoose = require(''mongoose''); var Schema = mongoose.Schema; function randomFunction() { var categorySchema = new Schema({ id: Number, name: String, description: String }, { collection: ''categories'' }); var Category; //... mongoose.connect(''mongodb://localhost/grouping''); new Step( function() { //Connect to mongodb var db = mongoose.connection; db.on(''error'', console.error.bind(console, ''connection error:'')); db.on(''open'', this); }, function() { //Create model console.log(categorySchema); //Logs the schema object right Category = mongoose.Model(''Category'', categorySchema); }, function(err) { console.log(err); //Error here }); //... }

Soy muy nuevo en Mongo (y bastante nuevo en el nodo) pero no tengo ni idea de lo que significa el mensaje de error.

Sé que tengo opciones definidas en el esquema, pero no veo cómo sería indefinido, ¿puede alguien señalarme en la dirección correcta?

Nota: este es un corte grande del código original, esta es la estructura general (en realidad hay algún código debajo de mongoose.Model(''Cat... pero se omite, supongo que porque el error es lanzado por el mongoose.Model llamada como incluso un console.log("Hello"); se imprime inmediatamente después de ella.

EDITAR He encontrado que dentro de Mongoose (mongoose / lib / document.js) intenta obtener this.schema pero no está definido

function Document (obj, fields, skipId) { //Line 37 this.$__ = new InternalCache; this.isNew = true; this.errors = undefined; var schema = this.schema; //-> undefined // ...


Este mensaje de error también se mostrará cuando se usen métodos de modelo en una cadena Promesa, como:

const Product = mongoose.model(''Product'', ProductSchema) ScrapProducts() .then(mapToModel) .then(Product.create)

Para resolverlo, debe asegurarse de que su modelo de mangosta preserve su contexto original.

const Product = mongoose.model(''Product'', ProductSchema) ScrapProducts() .then(mapToModel) .then(function(data) { return Product.create(data) })

o mejor:

const Product = mongoose.model(''Product'', ProductSchema) ScrapProducts() .then(mapToModel) .then(Product.create.bind(Product))


También puede obtener el mismo error al llamar esto.

MyModel = new mongoose.model(''<your model name>'', mySchema)

si eliminas lo nuevo.