Heroku学习 - 利用Heroku app实现 OrgA 查询Org B 的数据数据

最近研究了一番如何通过Heroku应用对OrgA开放一个接口,参数传递的是一个SQL,APP的负责将SQL通过callout的形式调用目标OrgB Rest API来获取数据并返回给OrgA。我是用的是nforce,express实现的,还有一种方式可以用jsforce,但我这条路没有走通,卡在总是提示我以下错误,问题是jsforce依赖包中hardcode的路径,而实际上core-js依赖包中并不存在,导致不兼容,我暂时无法解决,如果有方法,请不吝赐教。

Error: Cannot find module ‘core-js/modules/es6.array.for-each‘
2020-01-07T03:23:04.257723+00:00 app[web.1]: Require stack:
2020-01-07T03:23:04.257725+00:00 app[web.1]: - /app/node_modules/jsforce/lib/index.js
2020-01-07T03:23:04.257727+00:00 app[web.1]: - /app/node_modules/jsforce/index.js
2020-01-07T03:23:04.257729+00:00 app[web.1]: - /app/server.js

 

0. 此时先在Salesforce中创建一个Connected App, 并记录下ClientID和ClientSecret值,不加赘述。

 

接下来首先需要先安装Heroku CLI 和 Git。

1. 可以选择安装Githug Desk 并选项安装工具Windows PowerShell GitHub Desktop website 或者 

安装Git Bash https://devcenter.heroku.com/articles/git

https://git-scm.com/download/win。打开控制台

2. 安装Heroku CLI

npm install -g heroku

3. 创建新项目

ng new [新项目名]

4. 进入新项目

cd [新项目]

5. 登录Heroku

heroku login

6. 输入Heroku用户名和密码登录成功。

7. 创建Heroku App, 系统会为app随机生成一个标识。

heroku create
Creating app... done, ? tranquil-shore-75468
https://tranquil-shore-75468.herokuapp.com/ | https://git.heroku.com/tranquil-shore-75468.git

8. 创建server.js

touch server.js

9. 修改server.js

var express = require(express);
var bodyParser = require(body-parser);
var nforce = require(nforce);
var app = express();
app.use(express.static(__dirname + "/public")); 
app.use(bodyParser.json());

//nforce setup to connect Salesforce 
var org = nforce.createConnection({
  clientId: [Client Key of Connected APP],
  clientSecret: [Client Secret of Connected APP],
  redirectUri: https://localhost:3030/oauth/_callback,
  //apiVersion: ‘v37.0‘,  // optional, defaults to current salesforce API version
  environment: production,  // optional, salesforce ‘sandbox‘ or ‘production‘, production default
  mode: single // optional, ‘single‘ or ‘multi‘ user mode, multi default
});

// Initialize the app. 

var server = app.listen(process.env.PORT || 8080, function () { 
  var port = server.address().port; 
  console.log("App now running on port", port); 
}); 

// LEAD API ROUTES BELOW 

// Generic error handler used by all endpoints. 

function handleError(res, reason, message, code) { 
  console.log("ERROR: " + reason); 
  res.status(code || 500).json({"error": message}); 
} 

//, securityToken is required if IP Range is not set in profile
app.get("/lead", function(req, res) { 
  org.authenticate({ username: *********, password:**********,grant_type:password}, 
  function(err, oauth){ 
    if(err) { 
      console.log(Error:  + err.message); 
    } else { 
      console.log(Access Token:  + oauth.access_token); 
      org.query({query:"select id from lead"}, function (err, resp) { 
        if(err) throw err; 
        if(resp.records && resp.records.length){ 
          res.send(resp.records); 
        } 
      }); 
    } 
  }); 

});

app.listen(app.get(port), function () {
    console.log(Express server listening on port  + app.get(port));
});

注意到这个文件头有以下几个引用包,所以不难理解我们接下来需要安装其对应的包。

var express = require(‘express‘);
var bodyParser = require(‘body-parser‘);
var nforce = require(‘nforce‘);

10. 安装依赖包, --save可以将依赖包自动保存在package.json文件中。

npm install express body-parser nforce –-save

11.Git部署

git init
heroku git:remote -a [App表示名]
git add .
git commit -m [添加注释文字]
git push heroku master

 

12. 测试

在Postman中测试模拟调用[appname].herokuapp.com/lead,查看结果。

Heroku学习 - 利用Heroku app实现 OrgA 查询Org B 的数据数据

 

 

Heroku学习 - 利用Heroku app实现 OrgA 查询Org B 的数据数据

上一篇:利用kali生成木马远程控制安卓手机


下一篇:iOS 64位静态链接库