0
私はノードとmongooseを使ってアプリケーションを構築しています。テストの際には、奇妙な問題があります。ここにauth.index.js(ユーザーログイン用)があります。mongoose、node、user.model.jsで定義されたメソッドを使用できません。
auth.index.js:ここ
var express = require('express');
var mongoose = require('mongoose');
var passport = require('passport');
var config = require('../config/environment');
var User = require('../api/user/user.model');
var jwt = require('jsonwebtoken');
var auth = require('./auth.service');
var router = express.Router();
router.post('/login', function (req, res, next){
User.find({email: req.body.email}, function (err, user){
if (err) {
return next(err);
} else if (!user) {
return res.json({message: 'Invalid email.'});
} else {
if(!user.authenticate(req.body.password)){
return res.json({message: 'Invalid password.'});
};
var token = auth.signToken(user._id, user.username, user.role);
return res.json({token: token});
};
});
});
がuser.model.jsです:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
username: String,
password: String,
email: {type: String, lowercase: true},
role: {type: String, default: 'user'},
provider: String,
date: String
});
UserSchema.methods = {
//check password
authenticate: function(plainText) {
return plainText === this.password;
}
};
ただし、コマンドウィンドウで、それはその
ユーザーを返します。 .authenticatは関数ではありません。
私のしたいが、なぜ知っている、そしてそれは私が直接メソッドを使用することはできませんか、私はパスポートを通じてメソッドを呼び出す必要があることを意味するのでしょうか?ありがとう。
私はしようとしましたが、まだuser.authenticateを返す関数ではありません。 – vivian
このようにエクスポートしていますか? module.exports =ユーザー; –
このように:module.exports = mongoose.model( 'User'、UserSchema、 'User'); – vivian