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-
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());
app.use(express.json()); // to support JSON-encoded bodies
app.use(express.urlencoded()); // to support URL-encoded bodies
//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 || , 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 || ).json({"error": message});
} //, securityToken is required if IP Range is not set in profile
app.get("/queryList", function(req, res) {
org.authenticate({ username: '*********', password:'**********',grant_type:'password'},
function(err, oauth){
if(err) {
console.log('Error: ' + err.message);
} else {
var sqlStr = req.body.sql;// use req.body 获取参数
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/queryListWithAllConditions,查看结果。

到这里其实有个问题,就是安全性问题,需要测试,后续再更新。
Heroku学习 - 利用Heroku app实现 OrgA 查询Org B 的数据数据的更多相关文章
- 手把手教你如何利用 HeroKu 免费获取一个 Scrapyd 集群
手把手教你如何利用 HeroKu 免费获取一个 Scrapyd 集群 本文原始地址:https://sitoi.cn/posts/48724.html 准备环境 一个 GitHub 的账号 一个 He ...
- CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏
CASE函数 作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...
- Android学习系列(15)--App列表之游标ListView(索引ListView)
游标ListView,提供索引标签,使用户能够快速定位列表项. 也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧. 一看图啥都懂了: 1. ...
- Android学习系列(10)--App列表之拖拽ListView(上)
研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨. 鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...
- Android学习系列(37)--App调试内存泄露之Context篇(下)
接着<Android学习系列(36)--App调试内存泄露之Context篇(上)>继续分析. 5. AsyncTask对象 我N年前去盛大面过一次试,当时面试官极力推荐我使用AsyncT ...
- 学习笔记:APP切图那点事儿–详细介绍android和ios平台
学习笔记:APP切图那点事儿–详细介绍android和ios平台 转载自:http://www.woofeng.cn/articles/168.html 版权归原作者所有 作者:亚茹有李 原文地址 ...
- Android学习系列(7)--App轮询服务器消息
这篇文章是android开发人员的必备知识. 1.轮询服务器 一般的应用,定时通知消息可以采用轮询的方法从服务器拿取消息,当然实时消息通知的话,建议采用推送服务. 其中需要注意轮询的频率 ...
- Android学习系列(23)--App主界面实现
在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下 ...
- Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...
随机推荐
- 【js】vue 2.5.1 源码学习 (十一) 模板编译compileToFunctions渲染函数
大体思路(九) 本节内容: 1. compileToFunctions定位 1. compileToFunctions定位 ==> createCompiler = createCompiler ...
- D3.js力导向图中新增节点及新增关系连线示例
大家在使用D3.js中的力导向图时,基本都会遇到动态增加节点及连线的需求,这里记录一下我的实现方式. 话不多说,先放代码: <!DOCTYPE html> <html lang=&q ...
- JS异步解决方案
前言 异步最早的解决方案是回调函数,如ajax,事件的回调,setInterval/setTimeout中的回调.但是回调函数有回调地狱的问题; 为了解决回调地狱的问题,社区提出了Promise解决方 ...
- 2019-1-29-UWP-IRandomAccessStream-与-Stream-互转
title author date CreateTime categories UWP IRandomAccessStream 与 Stream 互转 lindexi 2019-01-29 16:33 ...
- Educational Codeforces Round 64部分题解
Educational Codeforces Round 64部分题解 A 题目大意:给定三角形(高等于低的等腰),正方形,圆,在满足其高,边长,半径最大(保证在上一个图形的内部)的前提下. 判断交点 ...
- 【一起学源码-微服务】Nexflix Eureka 源码七:通过单元测试来Debug Eureka注册过程
前言 上一讲eureka client是如何注册的,一直跟到源码发送http请求为止,当时看eureka client注册时如此费尽,光是找一个regiter的地方就找了半天,那么client端发送了 ...
- 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(二)
开心一刻 一头母牛在吃草,突然一头公牛从远处狂奔而来说:“快跑啊!!楼主来了!” 母牛说:“楼主来了关我屁事啊?” 公牛急忙说:“楼主吹牛逼呀!” 母牛大惊,拔腿就跑,边跑边问:“你是公牛你怕什么啊? ...
- nginx和keeplive实现负载均衡高可用
一. Keeplive服务介绍 Keeplive期初是专门为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入VRRP的功能,因此除了配合LVS服务以外,也可以作为其他服务(ng ...
- Mysql 字段类型与约束条件
一.数值类型 二.日期类型 三.枚举与集合 四.约束条件 五.设置严格模式 一.数值类型 1.1 整型 应用场景: id号.年龄... tinyint: 有符号:默认范围 -128, 127 无符号: ...
- $SP$3267 $DQUERY - D-query$ 主席树
正解:主席树 解题报告: 传送门! 一直在做$dp$题好久没做做别的了,,,所以来做点儿别的练练手,,,不然以前学的全忘了要/$kk$ 然后这题好像可以莫队/主席树/线段树/树状数组? 我就先只港下主 ...