我在模式上定義了一個實例方法,但似乎無法訪問它。在詳述之前,我會說我已經閱讀[這個問題](Mongoose instance method is undefined),它有同樣的問題,但我的根本原因必須不同。在將模型連接到名稱之前,我定義了所有實例方法。mongoose實例方法未定義在正確排序方法定義和模式命名之後
首先,我所定義的架構,然後定義一個實例方法: AccountSchema.methods.addFunds =函數(amountToAd,回調){// 做一些東西以添加資金 返回回調(); }
在該文件的底部,我的名字模式相關聯: VAR出口= module.exports =帳戶= mongoose.model( '帳戶',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'
我會很感激的任何幫助或使用實例方法完全完整的貓鼬架構定義的鏈接。
例如:https://github.com/LearnBoost/mongoose/blob/master/examples/doc-methods.js – aaronheckmann 2013-03-30 20:37:02