【发布时间】:2018-10-09 02:38:01
【问题描述】:
对于我的用户注册,我有
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 模块模型两次。我尝试将用户变量设置为程序顶部的全局变量,例如
const express = ..., userRouter = ...
var User = ...
但是,在我的回调函数中仍然无法访问此用户变量。
多次需要用户模块是正确的方法还是我错过了什么?
edit:在回调函数内部,用户变量是未定义的。
【问题讨论】:
-
没有理由在回调之外声明它不应该被访问。发生什么错误?
-
我认为node有一个特殊的全局变量
-
global.User = ... stackabuse.com/using-global-variables-in-node-js
-
您能显示您的
models文件中的内容吗? -
@Doug 本来打算发布的,但您首先提到了它,所以我认为您应该将其发布为答案。
标签: javascript express asynchronous scope callback