Как передать данные с Angular на сервер Node.Js и наоборот по одной конечной точке? - PullRequest
0 голосов
/ 04 января 2019

У меня есть код в Nodejs в качестве внутреннего интерфейса и Angular в качестве внешнего интерфейса.Я хочу получать и отправлять данные по одной конечной точке и на основе этих данных с сервера переключать кнопки.Переключение работает сейчас, но я хочу, чтобы, когда я в следующий раз выйду из панели мониторинга, при входе в систему я мог видеть, что значение ключа основано на значении из базы данных.Например, во-первых, это SET , после нажатия он изменился на CLEAR , и я вышел из панели управления.При следующем входе в систему я хочу видеть на своей кнопке ярлык CLEAR .

Это коды для нескольких частей приложения:

Angular Service

this.setUserFeatured = function(id, setFeatured) {
    return $http.put('/admin/v2/users/' + id + '/featured', { setFeatured: setFeatured })
  .then(returnedDataOrError);
};

угловой контроллер

function updateFeaturedButtonLabel() {
  $scope.featuredButtonLabel = $scope.user.setFeatured ? "Clear Featured" : "Set Featured";
}

function toggleFeatured () {
  $scope.user.setFeatured = !$scope.user.setFeatured;
  UserService.setUserFeatured($stateParams.id, $scope.user.setFeatured)
  updateFeaturedButtonLabel();
};

Html-файл

<a class="btn btn-info" ng-click="toggleFeatured()" ng-class="{on:user.setFeatured}">{{featuredButtonLabel}}</a>

ServerКонтроллер

function addFeaturedUser(req: $Request, res: $Response, next: NextFunction) {
  const schema = Joi.object().keys(_.pick(validate, ['userId', 'setFeatured']));
  const queryParams = { userId: req.params.id };
 if (!req.params.id) {
  return new errors.BadRequest('userId is not specified');
 }

 return validate.validate(queryParams, schema)
  .then(validatedParams =>
    userService5.updateUserLabel(validatedParams.userId, req.body.setFeatured))
  .then(result => res.json(result))
  .catch(next);
 }


router.put('/users/:id/featured', addFeaturedUser);

И updateUserLabel - это функция, которая обрабатывает соединение с базой данных и извлекает данные.

Мне просто интересно, как я могуиспользовать данные с сервера для изменения метки кнопки?

true/false для настройки кнопки идет от .then(result => res.json(result))

Заранее спасибо за помощь

1 Ответ

0 голосов
/ 04 января 2019

На ваш вопрос, я полагаю, вы спрашиваете, как использовать объект response, возвращенный в

$http.put().then(function(response){})

Структура объекта ответа можно найти в следующем документе.

https://docs.angularjs.org/api/ng/service/$http

enter image description here

Чтобы получить доступ к данным, возвращенным с сервера:

$http.put().then(function(response){response.data})

, что соответствует тому, что отправляет ваш сервер.

Кроме того, функция toggleFeatured должна быть добавлена ​​к объекту $scope.В противном случае ng-click не сможет вызвать эту функцию в HTML-шаблоне.

Надеюсь, это поможет.

...