我一直在尝试最后一个小时,通过findOne,findOneOrCreate等方法为passport.js写一个用户模块,但是找不到它.
user.js的
var User = function(db) { this.db = db; } User.prototype.findOne(email,password,fn) { // some code here } module.exports = exports = User;
app.js
User = require('./lib/User')(db); User.findOne(email,pw,callback);
我经历了几十个错误
TypeError: object is not a function
要么
TypeError: Object function () { function User(db) { console.log(db); } } has no method 'findOne'
更新
我提出了解决方案:
var db; function User(db) { this.db = db; } User.prototype.init = function(db) { return new User(db); } User.prototype.findOne = function(profile,fn) {} module.exports = User;
没有运气.
TypeError: Object function User(db) { this.db = db; } has no method 'init'
解决方法
在这里有几件事情,我已经纠正了你的源代码,并添加了评论来解释:
LIB / user.js的
// much more concise declaration function User(db) { this.db = db; } // You need to assign a new function here User.prototype.findOne = function (email,fn) { // some code here } // no need to overwrite `exports` ... since you're replacing `module.exports` itself module.exports = User;
app.js
// don't forget `var` // also don't call the require as a function,it's the class "declaration" you use to create new instances var User = require('./lib/User'); // create a new instance of the user "class" var user = new User(db); // call findOne as an instance method user.findOne(email,callback);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。