簡體   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