Javascript 在router.post或router.get之外使用req.user

Javascript 在router.post或router.get之外使用req.user,javascript,mongodb,express,Javascript,Mongodb,Express,我是否有办法在post或get请求之外使用req.user?我问这个问题是因为我想在其他地方使用这个变量。req.user来自定义如下的用户模式: const mongoose = require('mongoose'); const UserSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: t

我是否有办法在post或get请求之外使用
req.user
?我问这个问题是因为我想在其他地方使用这个变量。
req.user
来自定义如下的用户模式:

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true
  },
  password: {
    type: String,
    required: true
  },
  date: {
    type: Date,
    default: Date.now
  },
  health: {
    type: Number,
  },
 energy: {
   type: Number,
 },

  attack: {
    type: Number,
  },
  defence: {
    type: Number,
  },
  endurance: {
  type: Number
  },
  exp: {
  type: Number
  },
  power: {
    type: Number
  },
  charactername: {
    type: String
  },
  characterimg: {
    type: String
  },
  alive: {
  type: String
  },
});

const User = mongoose.model('User', UserSchema);

module.exports = User;
现在我有没有办法在get或post请求之外访问
req.user
?或者我可以用另一种不包括'req.user'的方式访问该模式吗

举个小例子:

 router.post('/mission1btn',  ensureAuthenticated, function(req, res){
   const user = req.user
上面是我使用它的地方,但现在我想在它之外使用它。例如,在这个地方:

function check() {
if (user.endurance = 100) {
//do something
}
}

假设您的Mongoose用户定义位于文件
models/user.js

在任何其他代码中,您都可以从数据库中找到一个用户,并使用此代码对其执行操作

"use strict";

const User = require('./models/User.js');


User.findOne({name:"test"}, function(error,user) {
   if(error) {
     throw error;
   }
    // user here is the same object as `req.user` 
    console.log(user.name); // outputs "test"
    if (user.endurance = 100) {
      //do something
    }
  });


我不清楚你所说的“请求之外”是什么意思。您的意思是在请求处理程序之外,还是完全在请求-响应周期之外?你能把用户的详细信息传递给我吗?我在底部添加了一个例子。这并没有澄清任何事情。你展示的是你可以访问它的地方,而不是你不能访问的地方。请注意,堆栈代码段用于可以在浏览器中运行的代码,而Express不支持。我无法在router.post或router.get之外访问它。所以,除了我给你们看的内容,没有其他地方可以例外。这意味着整个js文件都有我给你看的那个版本。如果这不清楚,那么我不知道是什么。顺便说一句,模式位于另一个名为User.js的文件中。但是路由处理程序之外的代码(传递给
get
post
方法的函数)何时真正被调用?因为如果它来自路由处理程序,那么只需传递用户对象。