Моя схема mongoose определена в файле user.js.
//user.js
const mongoose = require('mongoose');
const validator = require('validator');
const jwt = require('jsonwebtoken');
let userSchema = new mongoose.Schema({
email: {
type:String,
require:true,
trim:true,
minlength: 1,
unique:true,
validate:{
validator: validator.isEmail
,
message: '{value} is not valid',
}
},
password:{
type:String,
required:true,
minlength:6
},
tokens: [{
access:{
type:String,
required:true
},
token:{
type:String,
required:true
}
}]
})
userSchema.statics.findByToken = function(token){
console.log('token');
let User = this;
console.log("this is: ",User);
let decoded;
try{
decoded = jwt.verify(token,'abc123')
}catch(e){
return Promise.reject();
}
return User.findOne({
_id: decoded._id,
'tokens.token': token,
'tokens.access': 'auth'
})
}
const User = mongoose.model('User', userSchema );
module.exports = {
User: User,
}
Я пытаюсь импортировать его в отдельный файл и вызвать функцию findByToken внутри app.get("users/me") route
.Функция предназначена для получения токена в качестве аргумента и поиска документа, связанного с этим токеном, из базы данных.Код вставлен ниже
//server.js
const express = require('express');
const {User} = require('./models/user.js');
const bodyParser = require('body-parser')
let app = express();
app.use(bodyParser.json());
process.env.port = 3000;
const PORT = process.env.port;
app.get('/users/me',(req,res)=>{
let token = req.header('x-auth')
User.findByToken(token).then((user)=>{
if(!user){
return Promise.reject();
}
res.status(200).send(req.user);
}).catch(e)=>{
res.status(401).send();
}
})
app.listen(PORT,()=>{
console.log('listening to port: ',PORT)
})
Когда я запускаю код, я получаю эту ошибку.
