【发布时间】:2016-07-18 02:30:10
【问题描述】:
我与 JOB 模型和许多 TASK 之间存在一对多关系。我有单个任务的路线,我在其中获取 TASK 模型以进行显示,并从其 JOB 模型中获取一些数据。当我请求一个 TASK 时,我需要更新locked 和一个 user_id 字段,这样我就可以锁定任务并显示谁锁定了它,这样其他用户就无法访问该任务视图。因此,我需要保证任务已锁定=0,并立即使用时间戳更新该字段。
我当前的路由器代码是:
var route_task = function(req, res, next) {
new Model.Task({id: req.params.id}).fetch(withRelated: ['jobs']})
.then(function(task) {
if (!task) {
res.status(404);
res.render('404_tpl');
return;
}
if (task.get('locked') !== 0) {
res.status(403);
res.render('403_tpl', {title: '403 - Access Denied - Task is locked'});
return;
}
else {
/* I would update it here, but there's a slim */
/* chance someone else can come in and select */
/* the task. */
}
/* .. I set some res.locals vals from my task here .. */
var jobs = task.related('jobs');
jobs.fetch().then(function(job) {
/* .. I set some res.local vals here from my jobs .. */
switch (task.get('task_type')) {
case 0:
res.render('task_alpha_tpl');
break;
/* ... */
}
});
})
}
当我点击我的路由器以获得特定的任务 ID 时,我非常想选择 * where tasks.id = id and locked = 0,然后使用当前时间戳设置锁定,但是,我需要能够确定如果具有该 ID 的记录不存在,或者存在但只是被锁定。
我希望这是有道理的。我来自 C 和 PHP 世界,所以我正在慢慢学习异步编程。
【问题讨论】:
标签: node.js express ejs bookshelf.js