У меня есть настройка узла nodejs. Он извлекает данные из моей базы данных и превращает их в JSON, чтобы вытащить его с моего сервера NodeJS.
У меня есть эта услуга:
.service('LoginService', function ($q) {
return {
loginUser: function (name, pw) {
var deferred = $q.defer();
var promise = deferred.promise;
if (name == 'user' && pw == 'secret') {
deferred.resolve('Welcome ' + name + '!');
} else {
deferred.reject('Wrong credentials.');
}
promise.success = function (fn) {
promise.then(fn);
return promise;
}
promise.error = function (fn) {
promise.then(null, fn);
return promise;
}
return promise;
}
}
})
Теперь в этом я сравниваю вход пользователя для пароля и имени пользователя для user
и secret
. Теперь, когда у меня есть некоторые данные JSON на моем сервере, я хотел бы повторить это и сравнить его с name
и pw
в моем сервисе.
Поэтому я думаю, что это что-то вроде этого, но я думаю, что это синтаксическая ошибка
$http.get("http://***.***.**.***:****/login").success(function(data) {
$scope.user = data
});
angular.forEach(data, function(username, key) {
if(name == $scope.username && pw == $scope.password) {
//login code from above
}
});
Мой синтаксис angularJS ушел, я все еще участвую. Я не уверен, что даже вслух использую $scope
в сервисе.
Так что действительно я ищу, чтобы перебирать мои значения в JSON и сравнивать их со значениями, введенными пользователем.
Редактировать 1
Здесь я добавлю дополнительные сведения о проекте, которые помогут вам понять, что я делаю и почему.
У меня есть база данных Google облака SQL, которую я добавил в базу данных MySQL. В базе данных есть таблица пользователей, это содержит информацию, такую как имя, возраст, почтовый адрес, пароль и т.д. У меня есть 2 записи в этой таблице.
У меня также есть узел google nodeJS, который я использую для доступа к записям базы данных и возвращаю их как JSON с веб-адреса (http://: /load).
Вот почему мне нравится моя попытка входа в систему проверить массив JSON для имени пользователя и пароля. пароль - незашифрованный atm, но я просто хочу, чтобы мои основные функции там были сначала проверены, равны ли значения.
Я надеюсь, что это станет более понятным
Я думаю, вы что-то неправильно поняли! Вы не можете иметь действительную регистрационную проверку в angularjs, каждый мог бы видеть правильные учетные данные в вашем клиентском коде, вы должны сделать некоторые основные проверки, такие как письмо, которое действительно достаточно для пароля и т.д. Вот пример базового потока входа.
AngularJS - Frontend (Любой мог видеть этот код, потому что он запущен в браузере клиента)
.controller('LoginCtrl', function($scope,$http) {
$scope.login = function() {
if ($scope.username && $scope.password && $scope.password.length > 5) {
//more validations could be made here, or best in a directive!
//this could be a service.
$http.post('http://myserver.com/login', {
username: $scope.username,
password: $scope.password
}).sucess(function(data){
alert('logged!')
}).error(function(err){
alert('not logged::'+err)
})
}
}
})
NodeJS - Backend (только вы можете увидеть этот код, потому что он запущен на вашем сервере)
app.post('login', function(req, res){
var username = req.param('username');
var password = req.param('password');
if(username=='myusername' && password=='mypassword') {
//again of course this is a demo
//in real world you use a DB!
return res.send('Logged!');
}
return res.status(403).send('Username and password not valid!');
});
Это очень простой пример, сделанный с угловыми выражениями
Редактировать 1 На основе редактирования вопроса
У вас есть база данных MySQL, поэтому вы должны запросить свои учетные данные и дать возможность MySQL проверить, существует ли пользователь с этими учетными данными. В любом случае, я не знаком с облачными сервисами google, но я уверен, что есть способ запускать запросы в вашей БД!
Если вы снова захотите придерживаться своего первоначального плана и получить всю БД в nodejs и пропустить его, я не рекомендую его, но вы можете сделать это так.
var request = require('request'); //npm install request
app.post('login', function(req, res) {
var username = req.param('username');
var password = req.param('password');
request('http://www.dataFromMySQL.com', function(error, response, body) {
if (!error && response.statusCode == 200) {
var data = JSON.parse(body);
var result = data.filter(function each(r) {
return username == r.username && password == r.password;
});
if (result.length > 0) return res.send('logged')
else return res.status(403).send('Username and password not valid!');
}
return res.status(403).send('Couldnt get db data.');
})
});