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.