Strongloop loopback:以原子方式锁定模型实例

时间:2015-05-19 11:59:53

标签: loopbackjs

我通过strongloop的环回提供REST Api。

我需要通过一些调用来添加模型实例的锁定:

POST /User/{id}/tryLock

返回一个Lock实例,其中包含一些附加信息:锁是否成功,哪个用户锁定了对象等等。

我正在使用loopback-connector-mysql,我知道在同步MySQL中我会使用某种形式:

BEGIN TRANSACTION;
SELECT lockId FROM object WHERE id = objectId FOR UPDATE;

// This is C++ or Java or whatever:
if(lockId != NULL)
   Fatal("Object was locked")

INSERT INTO locks (objectId, userId, ...);
UPDATE object SET lockId = locks.lastInsertId WHERE id = objectId;
COMMIT;

在环回中可能有这样的事吗?我希望将它作为mixin实现,以便我可以将它用于选定的模型。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用的东西是Remote Hooks

User.beforeRemote( "tryLock", function( ctx, modelInstance, next) {
   //put code here    
}

有一种方法可以通过loopback-connector-mysql执行SQL语句。

所以我的直觉是看你是否可以将SQL语句写入其中(假设您的用户模式已绑定到MySQL并且用户模型已通过Arc迁移到MySQL中)。

以下是连接器中可用功能的摘录 - 您必须进行一些研究,以了解它如何与模型绑定,以确定它是否可访问。

MySQL.prototype.executeSQL = function(sql, params, options, callback) {