Невозможно получить доступ к статическим функциям в модели mongoose.ошибка говорит «неожиданный токен». - PullRequest
0 голосов
/ 10 декабря 2018

Моя схема 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)
   })

Когда я запускаю код, я получаю эту ошибку.

enter image description here

1 Ответ

0 голосов
/ 10 декабря 2018
module.exports = User = mongoose.model('users', UserSchema);

Я не вижу экспортного выражения в вашем user.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...