首页 文章

在正确排序方法定义和模式命名之后,未定义mongoose实例方法

提问于
浏览
0

我在模式上定义了一个实例方法,我可以说我已经读过[这个问题](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 回答

  • 0

    应该是这样的吗?

    AccountSchema.statics.login = function( email, password, callback) { 
        Account.findOne({ email:email}, function( err, doc){
            if(err) {
                console.log(err, null);
            } 
    
            if(doc) {
                var keys = Object.keys(doc.schema);
                for(var key in keys) {
                    console.log(key + ":  " + doc.schema[key]); // I changed doc[key] to doc.schema[key]
                }
            }
            callback(doc);
        }
    });
    

相关问题