我有一个简单的问题(对于比我更了解的人,那就是..)关于我的注册控制器代码。 当新用户在我的网站上注册时,我正在尝试检查数据库中的现有用户名。我将在下面提供代码。提前谢谢!
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);
});
});
});
答案 0 :(得分:0)
首先,我建议您研究使用Node模块passport
来处理注册和登录。它非常有用。
在控制台方面,问题很简单 - 您无法访问db
中正在使用的server.js
变量。它没有在前端定义,所以它没有任何意义。
现在,您在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或query中的<div class="b-datalist__item__subj">
hello
<span class="b-datalist__item__subj__snippet">hello world</span>
</div>
,并在数据库中找到布尔值。