在环回中使用远程方法增加模型中的字段?

在模型中有一个称为counter的字段,每当我调用一个自定义的远程方法

Request URL http://loopback:3000/api/models/increment_counter Request body EMPTY Response { "counter" : [Value after Increment] } 

目前要增量首先,我必须从数据库获取计数器值,并增加一个和更新couter值,这涉及到两个查询,是否有可能在单个NodeAPI调用,如下面的mysql query.I目前使用的是Mysql作为DB。

 mysql_query(" UPDATE model SET counter = counter + 1 WHERE model_id = '1' "); 

谢谢

鉴于你想要的MySQL语法,你似乎需要一个primefaces计数器

数据库事务

使用MySQL连接器,您可以使用数据库事务 。 它由MySQL连接器支持。 对于primefaces计数器来说有点矫枉过正,但是它会完成工作。

这是一个自定义远程方法的例子

 MyModel.someRemoteMethodForIncrementing = function(callback) { // Start the transaction MyModel.beginTransaction({ isolationLevel: MyModel.Transaction.READ_COMMITTED }, function(err, tx) { // Retrieve the current counter value as part of the transaction MyModel.findById(id, { transaction: tx }, function(err, data) { if (err) { console.log(err); return tx.rollback(function(err) { callback(err); }); } // Increment the counter as part of the transaction var inc = data.counter + 1; MyModel.updateAttributes({ counter: inc }, { transaction: tx }, function(err, newData) { if (err) { console.log(err); return tx.rollback(function(err) { callback(err); }); } // Commit the transaction to make it happen tx.commit(function(err) { if (err) return callback(err); // Counter should have been incremented callback(); }); }); }); }); }; 

我没有testing过,但它应该工作,让我知道

扩大的运营商

在将来,您将能够使用$ inc(增量)扩展操作符,但到目前为止,它只支持MongoDB连接器,而不是MySQL。

仅供参考,以下是语法( 仅适用于MongoDB

 PUT api/Model/:id?filter={"$inc":{"name":propertyToIncrement, "count":incrementAmount}} 

有一个正在进行的公关 ,我试图获得MySQL的支持,但有很多事情要做,才可以合并。

是的,您可以在单个回送远程方法调用中执行此操作。 假设您在请求中发送了一个Id

 yourModel.remoteMethod = function(data, cb){ yourModel.findById(data.id, function(err, object){ if(err){ cb(err, null); } object.counter += 1; object.save(function(saveErr, afterSaveObj){ cb(saveErr, afterSaveObj.counter); }) }); } 

这里cb是一个回送,回送传递给你的remoteMethod。