【问题标题】:How to send a variable from one router to another如何将变量从一台路由器发送到另一台路由器
【发布时间】:2018-02-22 12:27:59
【问题描述】:

请,我想使用 node.js 将一个变量从 login.js 发送到 dashbaord.js。

这是我的dashboard.js:

var express = require('express');
var router = express.Router();
var Firebase = require('firebase');
var login = require('./login');
var user =  login.userId;

var admin = require("firebase-admin");

var login = require('./login');

/* GET home page. */
router.get('/',  function(req, res, next) {
 console.log(user) //  this return an undefine 
  res.render("pages/dashboard");
});

module.exports = router;

提前致谢。

【问题讨论】:

  • 阅读documentation 或通过一些examples 将是一个不错的起点。
  • 请我无法正确理解您的示例。我在 login.js 中将 userid 声明为全局变量,并希望使用 dashboard.js 中的 userid 从数据库中检索数据。请帮助提供代码示例。提前致谢

标签: node.js express


【解决方案1】:

路由中的代码仅在命中 URL 模式时运行。因此,在下面的代码中,每次点击“/”时都会打印出 user 中的值,但您只初始化了一次 user。

router.get('/',  function(req, res, next) {
 console.log(user) //  this return an undefine 
  res.render("pages/dashboard");
});

var user = login.userId; 的行仅在您的主 express 应用启动时设置一次。这就是为什么它会以未定义的形式返回。但是您不应该以这种方式在模块之间传递用户信息,这就是会话的用途。

会话和用户 ID

如果您想获取 userId,您应该将其存储在用户会话或 cookie 中,然后您可以将其从请求对象中提取出来。您可以在会话中使用用户 ID 从数据库中检索特定于用户的任何数据。使用 express 没有内置的会话支持,但您可以 npm install 中间件,它会为您处理这个问题,以便您可以编写。

router.get('/',  function(req, res, next) {
 console.log(req.session.userId)
  res.render("pages/dashboard");
});

环境变量

如果您需要跨多个模块传递配置设置,您可以使用

process.env.${propertyName} 例如 process.env.cat = "Henry"。但这适用于您设置一次对所有用户都相同的内容。

【讨论】:

  • @kehindehussein 它只是一个对象。您只需在用户登录并决定创建会话后为其分配一个值。根据您选择的会话中间件,它们将具有文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多