javascript - 如何将新用户添加到我的 userDatabase 对象中

标签 javascript node.js express

我有一个这样定义的全局对象:

var userDatabase = {};

在我的应用程序中,我正在尝试注册新用户。这是我的函数的样子:

function register(req, res){
    var username = req.body.username;
    var obj= {count: 0,
              password:req.body.password};

    //if user is already in the database
    if(userDatabase.hasOwnProperty(username)){
        res.redirect("/?error=User has already registered");
    }
    //store user, redirect to home page
    else{
        userDatabase[username] = obj;
        console.log("added new user: ", username, "with properties: ",     userDatabase[username]);
        //redirect to homepage
        res.redirect("/");  
    }
}

我的问题是我不相信那个说法:

userDatabase[username] = obj;

实际上是将我新注册的用户添加到我的对象中,因为当我打印到我的控制台时,它说我的用户名未定义。

如何在我的对象中正确存储我的用户名?谢谢!

编辑:我应该补充一点,我只能使用此代码注册一个用户,当我尝试注册第二个用户时,它会显示“用户已经注册”错误...这让我真的相信我的对象是没有做我想让它做的事

这是我在 if/else 语句前后打印出 userDatabase[username] 的值时的控制台日志:

Express server listening on port 3000
before if/else:  undefined
added new user:  undefined with properties:  { count: 0, password: 'abc' }
after if/else:  { count: 0, password: 'abc' }
POST /register 302 11ms - 58b
GET / 200 226ms - 803b
GET /libs/jquery/jquery.min.js 304 5ms
GET /libs/bootstrap/css/bootstrap.min.css 304 4ms
GET /stylesheets/style.css 200 55ms - 110b
before if/else:  { count: 0, password: 'abc' }
after if/else:  { count: 0, password: 'abc' }
POST /register 302 2ms - 126b
GET /?error=User%20has%20already%20registered 200 27ms - 861b
GET /libs/jquery/jquery.min.js 304 2ms
GET /libs/bootstrap/css/bootstrap.min.css 304 1ms
GET /stylesheets/style.css 304 2ms

这里出了点问题 - 无法识别我尝试添加的新用户

编辑 2:

当我尝试在同一文件的另一个函数中访问 userDatabase[username] 时,它无法验证 userDatabase{} 是否存储了该用户。这就是我尝试访问它的方式:

function login(req, res) {
    var username = req.body.username;
    var password = req.body.password;
    req.session.username = username;
    req.session.password = password;    
    loggedInUsers[username] = LoggedIn;
    //when login button is pressed
    if(userDatabase.hasOwnProperty(username) ){
            storedPassword = userDatabase[username].password;
        if (storedPassword === password){
            //check for correct password
            userDatabase[username].count++;
            console.log("Count: ", userDatabase[username].count);
            res.redirect("/users");
        }
    }
    else{
        res.redirect("/?error=Invalid username/password");
    }
}

以及注册后尝试登录的控制台输出:

Express server listening on port 3000
before if/else:  undefined
added new user:  undefined with properties:  { count: 0, password: 'abc' }
after if/else:  { count: 0, password: 'abc' }
POST /register 302 11ms - 58b
GET / 200 232ms - 803b
GET /libs/jquery/jquery.min.js 304 6ms
GET /libs/bootstrap/css/bootstrap.min.css 304 6ms
GET /stylesheets/style.css 200 69ms - 110b
POST /login 302 2ms - 122b
GET /?error=Invalid%20username/password 302 1ms - 68b
GET /users 200 22ms - 430b
GET /libs/jquery/jquery.min.js 304 2ms
GET /libs/bootstrap/css/bootstrap.min.css 304 3ms
GET /stylesheets/style.css 304 1ms

最佳答案

那么,redirect 是做什么的?如果您重定向,那么您将丢失信息。也试试

console.log("added new user: ", username, "with properties: ",     JSON.stringify(userDatabase[username]));    

关于javascript - 如何将新用户添加到我的 userDatabase 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414842/

相关文章:

javascript - 使用 jQuery 获取 Asp 控件 ID

javascript - 如何让 JavaScript 在当前显示器上打开弹出窗口

node.js - Node Express MongoDB Native Driver — 在哪里打开数据库连接?

node.js - 无法使用 app.use 提供静态 html 文件

node.js - 结构推荐

javascript - knockout : dependency of two observables bidirectional

javascript - 如何使用 ChartJS 设置工具提示中每个项目的颜色

node.js - 如何优化 Express.JS 中的路由?

javascript - 当我运行 node app.js 命令时,它给我错误` ENOENT,.mime.types 上没有这样的文件或目录

javascript - 第二次运行 Node 项目需要很长时间才能加载(在 Windows 10 上)