使用NodeJS(v0.10.25)和ExpressJS(v4.4.12)以及以下架构
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);
尝试运行应用程序时出现以下错误:
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...
当&#39; userSchema.methods&#39;删除,应用程序运行,否则,此错误将始终显示。
你能帮帮我吗?
答案 0 :(得分:1)
您不能将名称与属性同名的方法命名,对于任何对象都是如此。
尝试将方法名称更改为setLogin
或其他内容。
Mongoose有一个封闭的问题,解释了我所说的here