检查数据库中的现有用户名 MEAN Stack
Checking database for existing username MEAN Stack
关于我的注册控制器代码,我有一个有点简单的问题(对于比我更了解的人,那就是..)。
当新用户在我的网站上注册时,我正在尝试检查数据库中的现有用户名。我将在下面提供代码。提前致谢!
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...');
}
}});
注意:浏览器中的控制台显示未定义数据库。
下面是我如何从 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);
});
});
});
首先,我建议您研究使用 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
接受 param or query 和 return 一个布尔值(如果它在您的数据库中找到的话)。
关于我的注册控制器代码,我有一个有点简单的问题(对于比我更了解的人,那就是..)。 当新用户在我的网站上注册时,我正在尝试检查数据库中的现有用户名。我将在下面提供代码。提前致谢!
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...');
}
}});
注意:浏览器中的控制台显示未定义数据库。
下面是我如何从 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);
});
});
});
首先,我建议您研究使用 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
接受 param or query 和 return 一个布尔值(如果它在您的数据库中找到的话)。