アクセスできないように見えるスキーマでインスタンス メソッドを定義しました。詳細に入る前に、[この質問] ( Mongoose instance method is undefined ) を読みましたが、同じ問題がありましたが、根本的な原因は異なるはずです。モデルをその名前に接続する前に、すべてのインスタンス メソッドを定義しました。
最初にスキーマを定義し、次にインスタンス メソッドを定義しました。}
そのファイルの最後で、名前をスキーマに関連付けます。 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'
インスタンスメソッドを使用する完全に完全なマングーススキーマ定義へのヘルプまたはリンクをいただければ幸いです。