Я новичок в meanjs и во всем этом джазе, так голый со мной. В настоящее время я разрабатываю приложение опросов, в котором пользователь может голосовать за вариант в данном опросе. каждый опрос имеет 2 или более вариантов в качестве поддокумента. каждый из этих вариантов имеет голоса, которые являются документами в другой коллекции (для аутентификации и уникальных целей голосования).Как создать новый документ и обновить существующий документ - MEAN.js
прямо сейчас у меня есть опросы CRUD working (я могу создавать, читать, обновлять и удалять без проблем), но моя проблема начинается, когда я пытаюсь создать функцию голосования, то есть обновлять документы опроса poll_option subdocument + создание новый документ для голосования.
poll.server.model.js
'use strict';
/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Poll Schema
*/
var PollSchema = new Schema({
poll_id: {type:Number},
user: {
type: Schema.ObjectId,
ref: 'User'
},
poll_question: {type:String},
poll_language: [{
type:Schema.ObjectId,
ref: 'Language'
}],
poll_category: [{
type: Schema.ObjectId,
ref: 'Category'
}],
poll_description: {type:String},
poll_description_raw: {type:String},
poll_weight_additional: {type:Number},
poll_flag_active:{type:Number,default:1},
poll_flag_18plus:{type:Number,default:0},
poll_flag_expire:{type:Number,default:0},
poll_flag_deleted:{type:Number,default:0},
poll_flag_moderated:{type:Number,default:0},
poll_flag_favourised:{type:Number,default:0},
poll_date_expiration:{type:Date},
poll_date_inserted:{type:Date,default:Date.now},
poll_flag_updated:{type:Date},
show_thumbs:{type:Boolean},
comments: [{
type: Schema.ObjectId,
ref: 'Comment'
}],
poll_options: [{
option_text:{type:String},
option_thumb:{type:Number,default:0},
votes:[{
type: Schema.ObjectId,
ref: 'Vote'
}]
}]
});
mongoose.model('Poll', PollSchema);
но плохо старт с фронта, это функция голосование в контроллере фронтсайд
// Vote
$scope.vote = function(){
$scope.votes = Votes.query();
var vote = new Votes({
_id:pollId,
option_id:optionId
});
vote.$save(function(response){
// ... //
}, function(errorResponse) {
$scope.error = errorResponse.data.message;
});
};
здесь является Votes фабрика:
angular.module('polls').factory('Votes', [ '$resource',
function($resource) {
return $resource('polls/:pollId/votes/:optionId', {
pollId: '@_id',
optionId: '@option_id'
}, {
update: {
method: 'PUT'
}
});
}
]);
до этого момента все работает хорошо, т.е. когда я запускаю $ scope.vote(); Функция я получить этот ответ в консоли браузера:
POST http://localhost:3000/polls/548c6da001ec1f4ba2860c38/votes/548c6da001ec1f4ba2860c3a 404 (Not Found)
из этого я заключаю, что призыв к этому URL сделан, контроллер + обслуживание (угловой) работает.
после meanjs примера статьи, я понимаю, что мне нужно, чтобы отобразить optionId параметров к фактической опции
poll.server.route.js
'use strict';
/**
* Module dependencies.
*/
var users = require('../../app/controllers/users.server.controller'),
polls = require('../../app/controllers/polls.server.controller');
module.exports = function(app) {
// Poll Routes
app.route('/polls')
.get(polls.list)
.post(polls.create);
app.route('/polls/:pollId')
.get(polls.read)
.put(polls.update)
.delete(polls.delete);
app.route('/polls/:pollId/votes/:optionId')
.put(polls.vote);
app.param('pollId', polls.pollByID);
app.param('optionId', polls.pollOptionByID);
};
, но независимо от того, что я делаю, продолжайте получать 404! здесь функция polls.pollOptionByID в polls.server.controller.js
exports.pollOptionByID = function(req, res, next, id) {
Poll.findOne({'poll_options._id':id}).exec(function(err,poll_option){
console.log('hi');
if (err) return next(err);
if (!poll) return next(new Error('Failed to load poll option ' + id));
req.poll_option = poll_option;
next();
});
}
, но я даже не попасть туда, я не вижу, что привет в журнале консоли. и да, в минусе я пробовал без console.log, но ничего не работает, я продолжаю получать только 404. Что я делаю неправильно? как я могу достичь своих целей, создавая новый документ для голосования + сопоставляя его с субдокументом poll_option в данном документе опроса? пожалуйста помоги!