为什么80%的码农都做不了架构师?>>>   

注意事项:soql 每次查询最大只能获取 2000 条记录

下面是使用 JSforce 对 Salesforce 进行相关操作的代码示例:

            var soql = "SELECT Id, Name, OwnerId, AccountId, RecordTypeId, Email, Go_People_Runner_Id__c, Account.Id, Account.RecordTypeId";soql += " FROM Contact";jsforceConn.query(soql, function(err, result) {if (err) {console.error(err);return logger.error(err);}console.log("total : " + result.totalSize);console.log("fetched : " + result.records.length);  // 每次最大2000条记录console.log("API Limit: " + jsforceConn.limitInfo.apiUsage.limit);console.log("API Used: " + jsforceConn.limitInfo.apiUsage.used);});
var records = [];
conn.query("SELECT Id, Name FROM Account", function(err, result) {if (err) { return console.error(err); }console.log("total : " + result.totalSize);console.log("fetched : " + result.records.length);console.log("done ? : " + result.done);if (!result.done) {// you can use the locator to fetch next records set.// Connection#queryMore()console.log("next records URL : " + result.nextRecordsUrl);}
});
var records = [];
var query = conn.query("SELECT Id, Name FROM Account").on("record", function(record) {records.push(record);}).on("end", function() {console.log("total in database : " + query.totalSize);console.log("total fetched : " + query.totalFetched);}).on("error", function(err) {console.error(err);}).run({ autoFetch : true, maxFetch : 4000 }); 
//
// Following query is equivalent to this SOQL
//
// "SELECT Id, Name, CreatedDate FROM Contact
//  WHERE LastName LIKE 'A%' AND CreatedDate >= YESTERDAY AND Account.Name = 'Sony, Inc.'
//  ORDER BY CreatedDate DESC, Name ASC
//  LIMIT 5 OFFSET 10"
//
conn.sobject("Contact").find(// conditions in JSON object{ LastName : { $like : 'A%' },CreatedDate: { $gte : jsforce.Date.YESTERDAY },'Account.Name' : 'Sony, Inc.' },// fields in JSON object{ Id: 1,Name: 1,CreatedDate: 1 }).sort({ CreatedDate: -1, Name : 1 }).limit(5).skip(10).execute(function(err, records) {if (err) { return console.error(err); }console.log("fetched : " + records.length);});
conn.sobject("Contact").select('*, Account.*') // asterisk means all fields in specified level are targeted..where("CreatedDate = TODAY") // conditions in raw SOQL where clause..limit(10).offset(20) // synonym of "skip".execute(function(err, records) {for (var i=0; i<records.length; i++) {var record = records[i];console.log("First Name: " + record.FirstName);console.log("Last Name: " + record.LastName);// fields in Account relationship are fetchedconsole.log("Account Name: " + record.Account.Name); }});
//
// Following query is equivalent to this SOQL
//
// "SELECT Id, FirstName, LastName, ...,
//         Account.Id, Acount.Name, ...,
//         (SELECT Id, Subject, … FROM Cases
//          WHERE Status = 'New' AND OwnerId = :conn.userInfo.id
//          ORDER BY CreatedDate DESC)
//  FROM Contact
//  WHERE CreatedDate = TODAY
//  LIMIT 10 OFFSET 20"
//
conn.sobject("Contact").select('*, Account.*').include("Cases") // include child relationship records in query result. // after include() call, entering into the context of child query..select("*").where({Status: 'New',OwnerId : conn.userInfo.id,}).orderby("CreatedDate", "DESC").end() // be sure to call end() to exit child query context.where("CreatedDate = TODAY").limit(10).offset(20).execute(function(err, records) {if (err) { return console.error(err); }console.log('records length = ' + records.length);for (var i=0; i<records.length; i++) {var record = records[i];console.log("First Name: " + record.FirstName);console.log("Last Name: " + record.LastName);// fields in Account relationship are fetchedconsole.log("Account Name: " + record.Account.Name); // if (record.Cases) {console.log("Cases total: " + record.Cases.totalSize);console.log("Cases fetched: " + record.Cases.records.length);}}});

从 Salesforce 数据库中下载 accounts 数据同步到本地数据库:

var config = require('../config.json');
var utility = require('./utility');
var moment = require('moment');var logger = null;
var pool = null;
var jsforceConn = null;var getSenderAccounts = function(callback){var soql = "SELECT Id, Name, Phone, Email__c";soql += " FROM Account";soql += " WHERE Account_Type__c = 'Customer'";jsforceConn.query(soql, function(err, result) {if (err) {return logger.error(err);}if(callback) {callback(err, result);}});
};function releaseConnection(senders, index, connection) {if(senders.length - 1 == index){connection.release();}
}function downloadSender() {getSenderAccounts(function(err, result){if(!result.done){logger.error('Accounts fetching failed');}pool.getConnection(function (err, connection) {if(err){logger.error(err);}var senders = result.records;senders.forEach(function(sender, index){var salesforceId = sender.Id;var email = sender.Email__c;var phone = sender.Phone;if(email != '' && email != null){connection.query('SELECT * FROM user WHERE email = ? AND is_deleted = 0 AND role = 1', [email], function (err, rows) {if(err){logger.error(err);}if(rows.length == 0){logger.error('Sender ' + sender.Name + ' is not found');releaseConnection(senders, index, connection);}else{if(rows[0].salesforce_account_id != '' && rows[0].salesforce_account_id != null){releaseConnection(senders, index, connection);}else{connection.query('UPDATE user SET salesforce_account_id = ? WHERE email = ? AND is_deleted = 0', [salesforceId, email], function (err, rows) {if(err){logger.error(err);}logger.info('Sender ' + sender.Name + ' has been synced');releaseConnection(senders, index, connection);});}}});}else if(phone != '' && phone != null){phone = phone.replace(/[^A-Z0-9]/ig, "");connection.query('SELECT * FROM user WHERE mobile = ? AND is_deleted = 0 AND role = 1', [phone], function (err, rows) {if(err){logger.error(err);}if(rows.length == 0){logger.error('Sender ' + sender.Name + ' is not found');releaseConnection(senders, index, connection);}else{if(rows[0].salesforce_account_id != '' && rows[0].salesforce_account_id != null){releaseConnection(senders, index, connection);}else{connection.query('UPDATE user SET salesforce_account_id = ? WHERE mobile = ? AND is_deleted = 0', [salesforceId, phone], function (err, rows) {if(err){logger.error(err);}logger.info('Sender ' + sender.Name + ' has been synced');releaseConnection(senders, index, connection);});}}});}else{logger.error('Sender ' + sender.Name + ' is Not found');releaseConnection(senders, index, connection);}});});})
}module.exports = {downloadSender: function (l, p, j) {logger = l;pool = p;jsforceConn = j;return downloadSender();}
}

转载于:https://my.oschina.net/u/943746/blog/1832921

【HAVENT原创】Salesforce (JSforce) 调用示例相关推荐

  1. C# 开发COM程序 PD调用示例

    准备 开发环境 .net 3.5 开发IDE: vs 2019 个人版 创建DLL 库程序 选择 .NET版本 编写代码,注意需要将要注册COM的类以及对应的方法进行public 标记 简单代码如下 ...

  2. java实时汇率的接口_eoLinker-API_Shop_汇率查询_API接口_Java调用示例代码

    eoLinker-API Shop 汇率查询 Java调用示例代码 汇率查询 提供汇率转换.单个货币对应的热门货币汇率行情,包括人民币.美元.欧元.英镑等100多种货币的实时汇率查询. 该产品拥有以下 ...

  3. C语言程序设计 函数递归调用示例

    函数递归调用示例(教材习题5.3,运行结果012345) #include<stdio.h> void fun(int k); void main() {   int w=5;   fun ...

  4. python api调用展示_Python百视api调用示例

    代码描述:基于Python的百视api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/129 1.[代码][Python]代码 #!/usr/bin/python ...

  5. php篮球比赛,篮球数据API接口 - 【篮球比赛动画直播变化数据】API调用示例代码...

    篮球比赛动画直播变化数据API调用示例,详细请查看在线文档,需注册下 package com.huaying.demo.basketball; import javax.xml.bind.JAXBCo ...

  6. boost::math模块两个 Lambert W 函数的最基本调用示例

    boost::math模块两个 Lambert W 函数的最基本调用示例 实现功能 C++实现代码 实现功能 boost::math模块两个 Lambert W 函数的最基本调用示例 C++实现代码 ...

  7. java调用kettle例子_Kettle API - Java调用示例

    Kettle API - Java调用示例 对向前兼容性的推荐:如果想要动态地创造Transformation (例如:从元数据),使用XML文件方法(KTR)而不是使用API.XML文件兼容Kett ...

  8. libsvm java 实例_LibSVM Java API调用示例程序

    [实例简介] LibSVM Java API调用示例程序 Eclipse 完整工程可以运行 相关详情见http://blog.csdn.net/yangliuy/article/details/804 ...

  9. 如何开发python sdk调用数据_Python SDK调用示例

    开发者可以通过Python SDK,调用物联网数据分析中生成的API. 步骤一:安装SDK 登录Python官方网站下载2.6.5及以上版本的Python,并按说明完成安装. (可选)安装Python ...

  10. 转载--json调用示例

    转载--json调用示例 json的常用数据格式 { name:value }  Object , 键值对形式的对象 [ Object,Object ] 对象数组 示例: var  o=[{" ...

最新文章

  1. News | Atomwise获投1.23亿美元推进AI药物研发
  2. R读取excel文件乱码 read.xlsx() 解决方法
  3. .NET Core Community 第二个千星项目诞生:Util
  4. 自嘲尾款人、丁工人?今年双十一就没想让你做人
  5. HDU Problem - 5918 Sequence I
  6. C++继承同名静态成员处理
  7. MacBook如何设置自动纠正拼写和自动大写字词的首字母
  8. wordpress数据库表详解
  9. SpringCloud Eureka自我保护机制介绍及配置
  10. sass报 error (Line XX: Invalid GBK character \xE4) 的解决办法
  11. 【APIO2015】Bali Sculptures
  12. git --amend 使用和撤销
  13. Gcode G4及M603定义
  14. 信号与系统相关知识回顾总结
  15. Python测试题20道(含答案)
  16. Win7,一次性修改所有文件夹图标
  17. html+css基础教程入门之CSS 尺寸
  18. 二维码扫码登陆过程分析
  19. android游戏地图编辑器
  20. 微信公众号主体注册数量提升申请方法

热门文章

  1. 褚霸:不要为了开源而开源
  2. Layui拓展第三方图标
  3. 小技巧 - 如何下载微信公众号音频?(附:此方法可用于类似的Web)
  4. Cortex-M3/M4内核处理器一次中断事件可能产生两次中断问题
  5. MySQL两阶段加锁
  6. Python爬虫理论 | (2) 网络请求与响应
  7. excel 双纵坐标 图文介绍excel 2007如何画双纵坐标图
  8. win7计算机时间显示错误,Win7每次重新启动时计算机显示时间都是错误的
  9. 为什么从Java开发转测试?
  10. 如何用运营思维,搭建会员运营体系