2016-04-13 3 views
2

Mit NodeJS (v0.10.25) und Express.js (v4.4.12) und dem folgenden SchemaFehler beim Ausführen der App mit mongooseSchema.methods Funktionen

var mongoose  = require('mongoose'); 
var Schema  = mongoose.Schema; 
var models  = require('./inherit/models.js'); 

var userSchema = new Schema({ 
    username: { type: String, required: true, unique: true, index: true }, 
    password: { type: String, required: true , minlength: 128, maxlength: 128 }, 
    email: { type: String, required: true, unique: true, index: true }, 
    profileImage: { type: String }, 
    company: { type: Schema.Types.ObjectId, ref: 'Company' }, 
    info: { 
     name: { type: String, required: true }, 
     dateOfBirth: { type: Date }, 
     gender: { type: String, enum: ['M', 'F'] } 
    }, 
    address: [ models.addressModel ], 
    contacts: [ models.contactModel ], 
    flags: [ models.flagsModel ], 
    login: { 
     lastDate: { type: Date }, 
     lastIp: { type: String }, 
     dtCreate: { type: Date }, 
     dtUpdate: { type: Date } 
    } 
}); 

userSchema.methods.findComplete = function(findQuery, populateObject) { 
    if (typeof populateObject === 'undefined') populateObject = 'company'; 

    return this.model('User').find(findQuery).populate(populate).exec(); 
}; 

userSchema.methods.login = function(username, password) { 
    //Some logic 

    return true; 
} 

userSchema.methods.contactTypes = function() { 
    return { 
     1: 'E-mail adicional', 
     2: 'Telefone residencial', 
     3: 'Telefone comercial', 
     4: 'FAX', 
     50: 'Telefone celular', 
     51: 'Celular (VIVO)', 
     52: 'Celular (TIM)', 
     53: 'Celular (Claro)', 
     54: 'Celular (Oi)', 
     55: 'Celular(Nextel)' 
    } 
} 

module.exports = mongoose.model('User', userSchema); 

Beim Versuch, die Anwendung ich die folgende Fehlermeldung erhalten, laufen :

TypeError: Cannot read property 'scope' of undefined 
    at model.Object.defineProperty.set [as login] (/home/grupow/Projetos/mean/node_modules/mongoose/lib/document.js:1638:25) 
    at applyMethods (/home/grupow/Projetos/mean/node_modules/mongoose/lib/model.js:3151:31) 
    at Function.compile (/home/grupow/Projetos/mean/node_modules/mongoose/lib/model.js:3121:3) 
    at Mongoose.model (/home/grupow/Projetos/mean/node_modules/mongoose/lib/index.js:392:17) 
    at Object.<anonymous> (/home/grupow/Projetos/mean/models/users.js:54:27) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/home/grupow/Projetos/mean/routes/users.js:5:16) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
[nodemon] app crashed - waiting for file changes before starting... 

Wenn die 'userSchema.methods' entfernt werden, die App laufen, sonst wird dieser Fehler zeigt immer nach oben.

Können Sie mir bitte helfen?

Antwort

1

Sie können eine Methode nicht denselben Namen wie eine Eigenschaft nennen, dasselbe gilt für jedes Objekt. Versuchen Sie, den Methodennamen in setLogin oder etwas anderes zu ändern.

Mongoose hat ein geschlossenes Thema, das erklärt, was ich sagte here

+0

Danke, das wie ein Charme. –

Verwandte Themen