使用nodejs实现OData的batch操作在Marketing Cloud里读取contact信息
我们先来看看Marketing Cloud系统里的contact信息:
一共1218374条数据。

我们用如下的nodejs代码通过OData来获取这些数据:
var request = require('request');
var config = require("./mcConfig");
var url = config.getContactBatchURL;
var sBody = "--batch_c914-a60c-1877" + "\n" +
"Content-Type: application/http" + "\n" +
"Content-Transfer-Encoding: binary" + "\n" +
"\n" +
"GET InteractionContacts?sap-client=100&$skip=0&$top=2&$select=ImageURL%2cName%2cContactLevelName%2cCountryName%2cCity%2cEMailAddress%2cPhoneNumber%2cMobilePhoneNumber%2cCorporateAccountName%2cInteractionContactUUID%2cRelationship%2cType&$inlinecount=allpages HTTP/1.1" +
"sap-cancel-on-close: true" + "\n" +
"Cache-Control: max-age=360" + "\n" +
"sap-contextid-accept: header" + "\n" +
"Accept: application/json" + "\n" +
"Accept-Language: en" + "\n" +
"DataServiceVersion: 2.0" + "\n" +
"MaxDataServiceVersion: 2.0" + "\n" +
"\n" + "\n" +
"--batch_c914-a60c-1877--";
var getContactOptions = {
        url: url,
        method: "POST",
        json:false,
        headers: {
            "content-type": "multipart/mixed;boundary=batch_c914-a60c-1877",
            'Authorization': 'Basic ' + new Buffer(config.user + ":" + config.password).toString('base64')
        },
        body: sBody
};
function getContact() {
  return new Promise(function(resolve,reject){
      var requestC = request.defaults({jar: true});
      console.log("Step1: get contact via url: " + url );
      requestC(getContactOptions,function(error,response,body){
        if( error){
          console.log("error occurred: " + error);
          reject(error);
        }
        console.log("response:" + body);
        var nStartIndex = body.indexOf("{");
        var nLastIndex = body.lastIndexOf("}");
        if( nStartIndex < 0 || nLastIndex < 0)
            return;
        var sPayload = body.substring(nStartIndex, ++nLastIndex);
        resolve(JSON.parse(sPayload));
      });
     });
}
function displayResult(oResult){
  console.log(oResult);
}
getContact().then(displayResult);
使用node命令直接执行这个.js文件:

得到结果:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

使用nodejs实现OData的batch操作在Marketing Cloud里读取contact信息的更多相关文章
- 使用nodejs对Marketing Cloud的contact主数据进行修改操作
		假设在Marketing Cloud有这样一个contact主数据: 现在需求是使用编程语言比如nodejs修改这个contact实例的高亮属性. 代码如下: var config = require ... 
- spring batch 以游标的方式  数据库读取数据   然后写入目标数据库
		前面关于Spring Batch的文章,讲述了SpringBatch对Flat.XML等文件的读写操作,本文将和大家一起讨论Spring Batch对DB的读写操作.Spring Batch对DB数据 ... 
- winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法
		最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ... 
- 三点经验:长时间运行函数需要随时发射信号报告进度,以及设置bool变量随时可以退出,每做一步操作必须及时记录和处理相关信息
		三点经验:长时间运行函数需要随时发射信号报告进度,以及设置bool变量随时可以退出,每做一步操作必须及时记录和处理相关信息 不能到最后一起处理,否则万一中间出错了,这个记录状态就全部都乱了. 
- 一个由正则表达式引发的血案  vs2017使用rdlc实现批量打印  vs2017使用rdlc  [asp.net core 源码分析] 01 - Session  SignalR  sql for xml path用法  MemCahe  C# 操作Excel图形——绘制、读取、隐藏、删除图形   IOC,DIP,DI,IoC容器
		1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ... 
- Java操作数据库——在JDBC里使用事务
		Java操作数据库——在JDBC里使用事务 摘要:本文主要学习了如何在JDBC里使用事务. 使用Connection的事务控制方法 当JDBC程序向数据库获得一个Connection对象时,默认情况下 ... 
- 使用nodejs创建Marketing Cloud的contact数据
		源代码如下: var config = require("./mcConfig"); var request = require('request'); var url = con ... 
- nodejs配置及cmd常用操作
		一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ... 
- 【nodejs学习】1.文件操作
		1.小文件拷贝,使用nodejs内置模块 var fs = require('fs'); function copy(src, dst){ fs.writeFileSync(dst, fs.readF ... 
随机推荐
- [idea][转]理解 IntelliJ IDEA 的项目配置和Web部署
			1.项目配置的理解 IDEA 中最重要的各种设置项,就是这个 Project Structre 了,关乎你的项目运行,缺胳膊少腿都不行.最近公司正好也是用之前自己比较熟悉的IDEA而不是Eclipse ... 
- nginx upstream 容错机制
			熟练掌握Nginx负载均衡的使用对运维人员来说是极其重要的!下面针对Nignx负载均衡upstream容错机制的使用做一梳理性说明: 一.nginx的upstream容错 1)nginx 判断节点失效 ... 
- Flutter 底部的renderflex溢出
			一开始直接使用Scaffold布局,body:new Column 然后模拟器会提示捕获异常: 然后百度了一下Flutter的溢出问题,发现解决办法是使用SingleChildScrollView包 ... 
- 深度优先dfs与广度bfs优先搜索总结+例题
			DFS(Deep First Search)深度优先搜索 深度优先遍历(dfs)是对一个连通图进行遍历的算法.它的思想是从一个顶点开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节 ... 
- 【VS开发】文件共享内存2
			在32位的Windows系统中,每一个进程都有权访问他自己的4GB(232=4294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near和far函数调用,也没有内存模 ... 
- OpenCV.资料(20190717)
			1.opencv将图片转换为视频 - zeng_haoyu的博客 - CSDN博客.html(https://blog.csdn.net/hy13684802853/article/details/8 ... 
- 再谈JVM中类加载
			前言 由于本人参加面试,但是JVM这块回答的十分不好,问了面试官,面试官说我基础不行!我真的不行,所以看过的不一定能理解,感觉之前就是糊弄任务,然后这次等实训结束,啥都干完了,我就记录下,深入了解下面 ... 
- Java没有引用传递机制,C#有。
			Java没有引用传递机制,C#有: public class Obj { private Integer myValue; public Integer getMyValue() { return m ... 
- taglib  block
			新建文件 package com.augmentum.oes.taglib; import javax.servlet.jsp.JspException; import javax.servlet.j ... 
- 2.5路由网关:Zuul
			在原有的工程上,创建一个新的工程 创建service-zuul工程 其pom.xml文件如下: <?xml version="1.0" encoding="UTF- ... 
