node.js - mongoose中声明的methods报not a function
本文介绍了node.js - mongoose中声明的methods报not a function的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
model.js
var mongoose = require('mongoose');
var userSchema = new mongoose.Schema({
username: ...
});
userSchema.statics = {
fetch: ...
}
userSchema.methods = {
comparePassword: function (_password, cb) {
...
}
}
var user = mongoose.model('user',userSchema);
module.exports = user;
controller.js
var user = require('../models/user');
exports.signin = function (req, res) {
user.findOne(...{
user.comparePassword(password,function (err, isMatch) {
...
})
});
}
请问这里报TypeError:user.comparePassword is not a function
是什么原因?
解决方案
申明一下我不使用mongoose驱动,所以以下纯属推测。
var user = require('../models/user');
所以user
是一个model
。这个model
有一个静态方法叫comparePassword
吗?显然没有,所以你用user.comparePassword
会失败。照你的写法,你应该是想用findOne
找到的对象的comparePassword
方法,这部分被你...
掉了,好好检查一下代码。
这篇关于node.js - mongoose中声明的methods报not a function的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文