【问题标题】:Checking database for existing username MEAN Stack检查现有用户名 MEAN Stack 的数据库
【发布时间】:2016-06-16 23:41:20
【问题描述】:

关于我的注册控制器代码,我有一个稍微简单的问题(对于比我更了解的人,那就是......)。 当新用户在我的网站上注册时,我正在尝试检查数据库中的现有用户名。我将在下面提供代码。提前致谢!

    app.controller('SignupController', function ($scope, $http, $window) {

        $scope.submitSignup = function () {
            var newUser = {
                username: $scope.username,
                password: $scope.password
            };

            if (newUser.username == db.users.username) {
                alert('Username is already taken.');
            }

            if ($scope.submitsignup.$valid) {
                $http.post('/users', newUser).then(function () {
                    $window.location.href = '/#';
                    alert('Your account has been created!');
                });
            }
            else {
                alert('You messed something up brotha...');
            }
        }});

注意:浏览器中的控制台显示 db 未定义。

这是我从 server.js 文件中的数据库获取用户的方法。

    app.get('/users', function (req, res, next) {
        db.collection('users', function (err, usersCollection) {
            usersCollection.find().toArray(function (err, users) {
                return res.json(users);
            });
        });
});

【问题讨论】:

  • 你的 db 变量来自哪里?
  • 这只是我在玩代码,我现在真的不知道我在做什么

标签: javascript angularjs mongodb express mean-stack


【解决方案1】:

首先,我建议您考虑使用 Node 模块 passport 来处理注册和登录。很有用。

在控制台方面,问题很简单——您无权访问您在server.js 中使用的db 变量。它没有在前端定义,所以没有任何意义。

现在,您有一个 解决方案,这里有app.get('/users'),因为该代码会将所有用户的列表从数据库发送到前端。我认为这不是一个好习惯,因为如果您有很多用户,需要发送大量信息。 但如果您将支票放入您的 http.get() 请求中,它会起作用

$http.get('/users').then(function(result){
    if(result.users.find(newUser.username)){
        alert('Username is taken!');
    } else {
        //continue working
    }
}

这应该可行,但它相当效率低下。您应该改为将 app.get 更改为 paramquery,如果在您的数据库中找到它,则返回一个布尔值。

【讨论】:

  • 感谢护照小费,我会立即使用。也非常感谢您在这里的代码示例,我只是一步一步地跟着一个人在 youtube 上,但是 api 有很多缺陷,几乎令人难以置信。无论如何,感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 2016-08-31
  • 2016-05-31
  • 1970-01-01
  • 2010-12-12
  • 2019-07-22
相关资源
最近更新 更多