我在模式上定义了一个实例方法,我可以说我已经读过[这个问题](Mongoose instance method is undefined),它有同样的问题,但我的根本原因必须是不同的 . 在将模型连接到其名称之前,我定义了所有实例方法 .
首先我定义了一个模式,然后定义了一个实例方法:AccountSchema.methods.addFunds = function(amountToAd,callback){//做一些添加资金的东西返回callback(); }
在该文件的底部,我将名称与模式相关联:var exports = module.exports = Account = mongoose.model('Account',AccountSchema);
对于记录,在关联模式和名称之前,我检查以确保AccountSchema.methods具有我的实例方法 .
稍后,我使用Account.findOne来获取帐户的实例:
AccountSchema.statics.login = function( email, password, callback) {
Account.findOne({ email:email}, function( err, doc){
if(err) {
console.log(err, null);
}
// below is just some stuff to see if the doc is associated to the schema
if(doc) {
var keys = Object.keys(doc.schema);
for(var propertyName in doc.schema) {
console.log(propertyName + ": " + doc[propertyName]);
}
// blah, do some other stuff
callback(doc);
}
}
我包含上面的代码段,因为它看起来像我从我的数据库中获取帐户时,它不再有任何实例方法 .
最后,当我尝试调用doc.addFunds时,我得到:
TypeError: Object #<Object> has no method 'addFunds'
我很感激任何帮助或指向使用实例方法的完全mongoose模式定义的链接 .
1 回答
应该是这样的吗?