gpt4 book ai didi

node.js - 使用 mongoose Schema.methods 函数运行应用程序时出错

转载 作者:太空宇宙 更新时间:2023-11-03 22:13:10 26 4
gpt4 key购买 nike

使用 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...

当删除“userSchema.methods”时,应用程序将运行,否则,将始终显示此错误。

你能帮我吗?

最佳答案

您不能将方法命名为与属性相同的名称,任何对象也是如此。尝试将方法名称更改为 setLogin 或其他名称。

Mongoose 有一个已解决的问题,解释了我所说的 here

关于node.js - 使用 mongoose Schema.methods 函数运行应用程序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36600463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com