#javascript #angularjs #node.js #express #angular-ui-router
#javascript #angularjs #node.js #выразить #angular-ui-router
Вопрос:
Я новичок, работающий над проектом, структурированным mean.js . Я все еще пытаюсь понять, как работает вся структура проекта, и я немного застрял.
В настоящее время у меня есть два модуля crud. Модуль проекта и модуль приложения. Пользователи должны иметь возможность обращаться к проектам. В рамках определенного проекта я должен иметь возможность просматривать все приложения, а затем принимать / отклонять их.
Я добавил пользовательский метод в angular $resource
function ProjectApplicationsService($resource) {
return $resource('api/projects/:projectId/applications', { projectId: '@_id' }, {
accept: {
method: 'PUT'
},
reject: {
method: 'PUT'
}
});
}
Как только я нажимаю кнопку, соответствующую определенному приложению, она запускает эту функцию и передает идентификатор приложения в качестве параметра.
function acceptApp(applicationID){
vm.application._id = vm.project._id;
vm.application.app_id = applicationID;
vm.application.$accept(successCallback, errorCallback);
function successCallback(res) {
console.log("success");
}
function errorCallback(res) {
vm.error = res.data.message;
console.log(vm.error);
}
}
Это должно вызвать вызов API для express, и вот маршрутизация для этого
app.route('/api/projects/:projectId/applications')
.get(users.requiresLogin, projects.hasAuthorization, projects.getApplications)
.put(users.requiresLogin, projects.hasAuthorization, projects.updateApplication)
.delete(users.requiresLogin, projects.hasAuthorization, projects.deleteApplication);
По сути, я хочу в конечном итоге вызвать updateApplication, но как мне получить идентификатор приложения в этом методе?
Ответ №1:
Предполагая, что вы собираетесь загрузить что-то на сервер, что вызовет ваш put
маршрут, который содержит функцию, которую вы хотите вызвать.
Вам нужно структурировать свои дескрипторы следующим образом:
function(request,response,next){ // usually abbreviated to `req,res`
handleData();
next(); // move onto the next function;
}
Параметры легко запомнить, запрос предшествует ответу, а затем next — вам нужен next только тогда, когда вы хотите перейти к другому обработчику.
Если вы не вызовете next()
маршрут, он остановится — вы, вероятно, захотите вызвать next после успешной авторизации.
данные хранятся в теле запроса, поэтому вы можете получить к ним доступ с помощью request.body
Примечание: не забудьте ответить своему пользователю — что-то вроде res.send("success")
, или у них истечет время ожидания
Комментарии:
1. Чувак, я буквально только что понял это. Запрос. тело было ключом. Спасибо!!