【发布时间】:2017-07-12 14:32:58
【问题描述】:
我目前在 Express Node.js 应用程序中定义了一个 POST 路由,如下所示:
var locationService = require("../app/modules/locationservice.js");
app.post('/createstop', isLoggedIn, function(req, res) {
locationService.createStop(res, req.body);
});
(对于这个问题,请假设 & db 中的路由有效。我的记录是在提交表单时创建的,这是我正在努力解决的问题)
在 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 持久层异步插入一条记录,之后我可以将结果粘贴到 promise 的响应中then()
所以目前这只能通过将响应对象传递给locationservice.js 方法然后在then() 中设置res.json 来实现。就我的服务等级而言,这对我来说不是最理想的,而且感觉也不对。
我希望能够将我的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,并对 that 承诺处理程序中的响应做出反应。但这目前超出了我的范围。我已经完成了尽职调查,但我们将非常感谢一些专家对我的具体案例的个人意见。
【问题讨论】: