web-dev-qa-db-fra.com

mongoose TypeError: Schema n'est pas un constructeur

J'ai rencontré une chose étrange. J'ai plusieurs modèles de mangouste - et dans l'un d'eux (seulement dans un!), J'obtiens cette erreur:

TypeError: Schema is not a constructor

Je trouve cela très étrange car j'ai plusieurs schémas de travail. J'ai essayé de consigner mongoose.Schema dans le schéma qui ne fonctionnait pas et il est en effet différent du mongoose.Schema dans mes schémas de travail - comment est-ce possible? Le code est presque identique . Voici le code pour le schéma qui ne fonctionne pas:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var errSchema = new Schema({
  name: String,
  images:[{
    type:String
  }],
  sizes:[{
    type: String
  }],
  colors:[{
    type: Schema.ObjectId,
    ref: 'Color'
  }],
  frontColors:[{
    type: Schema.ObjectId,
    ref: 'Color'
  }],
  script: Boolean
},{
  timestamps: true
});

var Err = mongoose.model('Err', errSchema);

module.exports = Err;

Code pour un schéma de travail:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var colorSchema = new Schema({
  name: String,
  image: String,
  rgb: String,
  comment: String,
});

var Color = mongoose.model('Color', colorSchema);

module.exports = Color;

Toute aide serait appréciée!

11
David Stenstrøm

Ce devrait être Schema.Types.ObjectId, pas Schema.ObjectId: http://mongoosejs.com/docs/schematypes.html

4
str

J'ai rencontré la même chose. J'ai le code précédent comme ça

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema();
    var schema = new Schema({
        path : {type:string , required:true},
        title: {type:string , required: true}
    })
 module.export = mongoose.model('game', schema);

Puis j'ai résolu le problème du constructeur en utilisant le script ci-dessous

   var mongoose = require('mongoose');
    var schema = mongoose.Schema({
        path : {type:string , required:true},
        title: {type:string , required: true}
    })
 module.export = mongoose.model('game', schema);
14
crown

Comprenez que je suis en retard pour le parti, mais le code ci-dessous a fonctionné pour moi, pourrait être utile pour quelqu'un qui utilise la version mangouste 5.2.15

const mongoose = require('mongoose');
const Scheme = mongoose.Schema;

const ItemSchema = new Scheme({
    name: {
        type: String,
        require: true
    },
    date: {
        type: Date,
        default: Date.now
    }
});

module.exports = Item = mongoose.model('Item', ItemSchema);
0
Khaja Mohammed