在环回中使用远程方法增加模型中的字段?
在模型中有一个称为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。
- 用testing数据库testingStrongloop RESTapi
- 环回 – 扩展内置模型的最简单方法
- 如何使用Strongloop Loopback REST API来包含和sorting数组?
- 非规范化,ACL和filter在LoopBack中查找全部
- Strongloop Passport.js身份validation – “无法获取访问令牌”
- config.json与config.js | 什么是global-config.js | 在环回应用程序中查看服务器configuration?
- 在Loopback中从自定义方法访问其他模型的方法
- 在loopback中通过id更新启动脚本中的模型值?
- LoopBack远程方法和对模型数据的访问