Использование PUT для обновления подсчета голосов
Я делаю простое приложение для опроса javascript с полным стеком, используя генератор угловых-полных стеков Yeoman. Я дошел до того, что мне нужно зарегистрировать ввод пользователя, чтобы зарегистрировать голосование по ответу на отдельный опрос.
В настоящее время мой код корректно влияет на код на стороне клиента, но не обновляет базу данных.
Вот схема:
var PollSchema = new Schema({
creator: String,
title: String,
answers: [{
value: String,
votes: Number
}]
});
Вот контроллер:
'use strict';
angular.module('angFullstackCssApp')
.controller('ViewCtrl', function ($scope, $routeParams, $http) {
$http.get('/api/polls/' + $routeParams._id).success(function (poll) {
console.log(poll);
$scope.poll = poll;
$scope.radioData = {
index: 0
};
$scope.submitForm = function () {
console.log($scope.radioData.index);
$scope.poll.answers[$scope.radioData.index].votes += 1;
// Change database entry here
$http.put('/api/polls/' + $routeParams._id, {answers: $scope.poll.answers});
};
});
});
и вот вид:
<form ng-submit="submitForm()">
<div ng-repeat="answer in poll.answers">
<label><input type="radio" name="option" ng-model="radioData.index" value="{{$index}}"/>
{{ answer.value }} - {{ answer.votes }} Votes
</label>
</div>
<button class="btn btn-success" type="submit">Vote!</button>
</form>
В моем терминале я получаю успешный запрос пут в соответствии с идентификатором, который я передаю...
PUT /api/polls/56229ba4e10ae6ad29b7a493 200 3ms - 225b
... но ничего не меняется в моей базе данных. Я не получаю ошибок консоли.
Вот мой маршрут:
router.put('/:id', controller.update);
и update
функция (часть йоменского значения по умолчанию):
// Updates an existing poll in the DB.
exports.update = function(req, res) {
if(req.body._id) { delete req.body._id; }
Poll.findById(req.params.id, function (err, poll) {
if (err) { return handleError(res, err); }
if(!poll) { return res.status(404).send('Not Found'); }
var updated = _.merge(poll, req.body);
updated.save(function (err) {
if (err) { return handleError(res, err); }
return res.status(200).json(poll);
});
});
};
Изменить: я понял, что происходит, когда голосование отправлено. Когда пользователь щелкает голосование, запрос PUT поступает на сервер и обновляет значение:
Однако, когда страница обновляется, она показывает, что на самом деле произошло; все значения в базе данных изменились на первое значение ответа:
Все еще нет ошибок консоли. Если выбрано и проголосовано значение, которое не является первым, все значения изменяются на первое независимо, но голоса не регистрируются.
- Как я могу написать запрос PUT, который успешно обновляет мою базу данных?