2017-05-27 74 views
0

我在Oracle DBMS中有一个表,其中的主键增加了一个Oracle序列。该表由我公司的一些应用程序使用。在Loopbackjs模型中映射Oracle序列

我想要使用框架Loopback.io(Node.js)来构建API。我如何在这个新的Loopback API中配置这个序列的名称?

回答

1

我已经找到了以下解决方案:

我创建了一个,对于我的序列的下一个值执行本机查询服务器目录中的文件OracleSequence.js:

class OracleSequence{ 
 

 
\t constructor(name) { 
 
\t \t this._sequenceName = name; 
 
\t } 
 
\t 
 
\t nextVal(dataSource,cb){ 
 
\t \t let valor = -1; 
 
\t \t dataSource.connector.execute(`SELECT ${this._sequenceName}.nextval FROM dual`,null,function(error,resultado){ 
 
\t \t \t if(error){ 
 
\t \t \t \t console.log(error); 
 
\t \t \t \t throw Error(`Fail to execute sequence ${this._sequenceName}`); 
 
\t \t \t } 
 
\t \t \t cb(resultado[0].NEXTVAL); 
 
\t \t }); 
 

 
\t } 
 
} 
 

 
module.exports = OracleSequence

然后我把它叫做在我的模型钩:

const OracleSequence = require("../../server/OracleSequence"); 
 
module.exports = function(Valadares) { 
 

 
      Valadares.observe('before save',function setaID(ctx,next){ 
 
       if(ctx.isNewInstance){ 
 
         let sequence = new OracleSequence("SQ_VALADARES"); 
 
         sequence.nextVal(ctx.Model.app.dataSources['oracleDS'],function(id){ 
 
         ctx.instance.idGV = id; 
 
         next(); 
 
        }); 
 
       } else{ 
 
         next(); 
 
       } 
 
     }); \t 
 
};