Я в настоящее время маршрут POST, определенной в приложении Экспресс Node.js, как так:Определение/Использовать обещание в маршруте Экспресс POST на Node.js
var locationService = require("../app/modules/locationservice.js");
app.post('/createstop', isLoggedIn, function(req, res) {
locationService.createStop(res, req.body);
});
(на этот вопрос, пожалуйста, взять на себя маршрутизацию & дБ работает .. моя запись создается на форме представления, это ответ, который я борюсь с)
В locationservice.js
классе я тогда в настоящее время
var models = require('../models');
exports.createStop = function(res, formData) {
models.location.build({ name: formData.name })
.save()
.then(function(locationObj) {
res.json({ dbResult : locationObj });
});
};
Так как вы можете видеть, мой маршрут вызывает экспортируемую функцию CreateStop
, которая использует постоянный слой Sequelize для вставки записи в асинхронном режиме, после чего я могу придерживаться результата на ответ в обетованной then()
Так что на данный момент это работает только путем передачи объекта ответа в метод locationservice.js
, а затем устанавливает res.json
в then()
. Это неоптимально для меня в отношении моих классов обслуживания, и я тоже не чувствую себя хорошо.
То, что я хотел бы сделать, это «обработать» мой метод createStop
как обещание/с обратным вызовом, поэтому я могу просто вернуть новый объект местоположения (или ошибку) и обработать его в вызывающем методе - поскольку в будущем использование этого метода может иметь контекст/параметр ответа для передачи/заполнения.
Поэтому в маршруте я хотел бы сделать что-то подобное:
var locationService = require("../app/modules/locationservice.js");
app.post('/createstop', isLoggedIn, function(req, res) {
locationService.createStop(req.body)
.then(dataBack) {
res.json(dataBack);
};
});
Это значит, я мог бы назвать createStop
от другого, где в будущем и среагировать на ответ в этого обработчика обещание. Но это в настоящее время вне меня. Я провел тщательное исследование, но некоторые индивидуальные экспертные материалы по моему конкретному делу были бы наиболее ценными.
Вы не могли бы заменить ES6 => со старой школы разметки? Я не могу получить эту работу в своем коде, и это меня бросает! –
Уверен, обновлено .. –