繁体   English   中英

如何在回调函数中访问全局作用域变量? [JS]

[英]How to access global scope variables in callback functions? [JS]

对于我的用户注册,我有

const express = require ('express');
const userRouter = express.Router ();

userRouter.get ('/', function getUserList (req, res) {
    let User = require ('../models').User;
    User.find ({}, function (err, list) {
        res.json (list);
    });
});

userRouter.post ('/', function createUser (req, res) {
    let User = require ('../models').User;
    if (req.body.username && req.body.password)
        User.create (req.body, function (err, user) {
            res.json (user);
        });
});

... 3 more functions with the same `let User` ...

module.exports = userRouter;

在这里,我必须两次require模块型号。 我尝试将User变量设置为程序顶部的全局变量,例如

const express = ..., userRouter = ...
var User = ...

但是,在我的回调函数中仍无法访问此User变量。

是否多次要求用户模块是执行此操作的正确方法,还是我遗漏了某些东西?

编辑 :在回调函数中,用户变量未定义。

如@Doug所述,您应该像这样将global传递给用户变量:

global.user = ...

此过程实质上将user变成了全局可访问变量。 您可以在此处阅读有关Node global更多信息,以了解它的功能以及它的含义: http : //stackabuse.com/using-global-variables-in-node-js/

要指出@charloetfl是否位于文件内,应该在回调之外或文件顶部声明它。 如果我们要讨论的是对项目中所有模块和文件的访问,则将其添加到全局对象是在节点中进行处理的方式,如@doug和@andrewl所述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM