【问题标题】:How to get the value of a var within a scope and use it in another file如何在范围内获取 var 的值并在另一个文件中使用它
【发布时间】:2019-06-23 23:47:18
【问题描述】:

我想获取当前登录用户的电子邮件并将其保存到我的 node/express 后端的变量中。 然后我想在另一个 js 文件中使用该变量,这样我就可以将它用作 mongodb 集合。 这仅适用于获取请求而不是发布请求吗?

我已经尝试过 module.exports,req session passport,

//this works, findUser would log the user id
var findUser;
router.get('/dashboard', (req,res)=>{
  findUser = req.user.id;
//findUser = req.session.passport.user;
 console.log(findUser);
res.send(req.user);
});
// this does not work, returns undefined
     users js file
  // module.exports.findUser;
   module.exports.findUser = req.user.id;
    // post.js file
   var sourceFile = require('./users');
   console.log(sourceFile.findUser);

我希望 var 在用户登录后跨 js 文件保存。 这是一个cookie会话问题,为什么不能创建一个函数来获取当前用户,而不是一个get req?

【问题讨论】:

  • 你不能这样写服务器代码。 node.js 服务器处理来自许多不同用户的请求。您永远不要在请求对象本身或某些关联的会话对象之外存储与一个特定请求相关联的状态。尝试这样做会导致一个用户的数据与另一个用户的数据混淆。简单的编程模型是编写一个请求处理程序,然后在该请求处理程序内或在从该请求处理程序内调用的函数中执行与该请求相关的所有操作。如果您需要将请求状态传递给其他函数,请将其作为参数传递。
  • 听起来您可能想使用用户会话。阅读 express-session 模块。然后,您可以将数据写入会话对象,并且当该客户端发出另一个请求时,该数据将可供未来的请求处理程序使用。这是代表某个特定客户端安全保存数据的一种方法,您可以在将来对该客户端的请求中使用该数据。

标签: javascript node.js


【解决方案1】:

你应该这样做:module.exports = req.user.id。然后,只需要它一样! const userId = require('./file.js').

如果您有多个导出,您可以使用module.exports = {id: req.user.id, password: req.user.password}。导入时,这样做: const user = require('./file.js') console.log(user.id, user.password)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多