gpt4 book ai didi

node.js - 使用 bookshelf.js,如何自动更新模型记录?

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:59 26 4
gpt4 key购买 nike

我与 JOB 模型和许多任务具有一对多关系。我有一条针对各个任务的路线,我在其中获取 TASK 模型以供显示,并从其 JOB 模型中获取一些数据。当我请求任务时,我需要更新locked和user_id字段,这样我就可以锁定任务并显示谁锁定了它,这样其他用户就无法访问该任务 View 。因此,我需要保证任务已锁定=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 时,我非常想选择 * 其中tasks.id = id 且锁定 = 0,然后使用当前时间戳设置锁定,但是,我需要能够确定如果具有该 ID 的记录不存在,或者存在,但只是被锁定。

我希望这是有道理的。我来自 C 和 PHP 世界,所以我正在慢慢学习异步编程。

最佳答案

我认为你应该在事务中执行此操作,我想如果你希望值不改变,我认为你不应该在客户端使用信号量或其他东西来模拟关键部分或这种心态中的东西。

关于node.js - 使用 bookshelf.js,如何自动更新模型记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31800621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com