微软总是为他们的系统提供API和SDK,这些API和SDK在.NET语言中很容易使用。
从Node.js应用访问这种基于微软的系统,特别是那些不在微软Windows平台上托管的系统,可能会比较棘手。
我知道你可能会反对,说通常会有web服务和API & SDK一起发布,但是手心手背,你准备好了马上快速高效地使用它们吗?我敢打赌,你一定在期待一些学习曲线的延迟。
如果一个集成平台允许你通过执行简单的SQL语句来创建、检索、更新和删除主要业务系统中的数据,岂不是更容易?起初,这听起来可能很危险--那些CRUD操作不会威胁到数据的完整性吗?
事实上,这种可能性是存在的--通过使用。 Connect Bridge 平台,我将在本教程中使用Connecting Software。它是一个商业工具,但你可以免费访问其试用版。你为什么不试一试呢?
入门
申请您的Connect Bridge试用版,下载并激活您的许可证,请按以下步骤操作。 教程视频.
我们还需要一台安装了Node.js的机器。我们将在运行CentOS 7.x发行版的Linux机器上进行演示。
为环境做准备
我推测你已经选好了自己喜欢的Linux发行版。第一步是在你的环境中安装Node.js。在CentOS上,我使用了我最喜欢的包管理器Yum。如果你不确定如何在你的操作系统中安装Node.js,请参考以下内容 node.js部署指南页面.
你现在需要连接到你的目标系统,例如,微软Exchange。为此,运行Connect Bridge管理工作室和
- 为Exchange添加一个账户(账户-添加账户)。在添加账户时,你应该选择连接器微软Exchange,并使用你的Exchange登录凭证
- 打开 "新查询 "选项,然后是 "连接浏览器"。找到Exchange连接器并展开它,直到你看到DefaultConnection。右键单击DefaultConnection,选择Get Connection string。复制ODBC的连接字符串,因为你将需要它来传递给脚本。
- 使用 "新建查询 "选项,测试出一个可以访问Exchange中所需内容的查询。 P请注意,虽然看起来我们在直接使用一个数据库,但事实并非如此。Connect Bridge是在访问API,然后把它当作一个数据库来展示。一旦你有了你的查询,请复制它,因为你需要把它传递给脚本。
解决办法
更新:下面提到的Connect Bridge游乐场服务已经不提供了。本文将很快进行相应更新。
同时,如果你想在你的Node.js集成项目中使用Connect Bridge,请不要犹豫,在下方留言或直接与我们联系。 专家.
该解决方案的程序如下。
- 为解决方案创建一个文件夹。我把它命名为 "nodearticle",原因很明显。
- 为nodejs应用创建一个manifest文件。文件名是package.json。找到下面的文件内容。
{ "name":"nodejsExchangeDemo"。 "版本","0.0.1","0.0.1", "description":"演示如何在nodejs中访问exchnage日历"。 "main"。"app.js", "作者":{ "名称"。"", "电子邮件"。"" }, "依赖关系"。{ } }
3.这个动作我们需要机器连接到互联网。打开你喜欢的shell。执行下面的命令,为我们的应用程序安装一个名为connect-bridge-node的依赖模块。
npm install connect-bridge-node -save
在这个操作之后,connect-bridge-node依赖应该出现在我们的package.json manifest文件中。
4.下一步我们将稍微利用一下connect-bridge-node模块(由我编写)本身的源码。我们将把文件test.js从 模块的github仓库.并修改它,使它看起来像这样(我们将在代码注释中解释代码本身)。
//要求模块的依赖性并传递你的连接参数。 //要获得你的连接桥节点证书,请按照以下步骤操作 //关于 "如何查到我的证书? //本条 var cbnode = require('connect-bridge-node')('pg.connecting-software.com', 4433, 'michalhainc0036', '29e)5d2bc9044e2c42878A4A63BC6777', 'EX2010_PLAYGROUND_michalhainc0036'); //连接桥操作的错误处理程序 函数 onError(err) { console.error(err); } //连接事件处理程序--成功连接后执行。 //到Connect Bridge集成 //服务器实例 函数 onConnected() { console.log('连接到Connect Bridge')。 console.log('Inserting record to Exchange Calendar...'); //连接成功后,我们将 //创建一个预约并调用onRecordInserted。 //事后回调 cbnode.execute("INSERT INTO [Appointment] (Subject, StartDate, EndDate, Location) "+。 "VALUES(?,?,?,?);"。 //插入语句的参数 ['我的约会','2015-10-11 10:00','2015-10-11 10:00','布拉迪斯拉发']。 onRecordInserted, onError)。) } 功能 onRecordInserted() { //从Exchange日历中获得的前100个约会。 //从我们的CB游乐场帐户 //我们将只检索某些字段 console.log("从Exchange日历中检索前100个约会...") cbnode.execute( "SELECT TOP 100 Subject, Location, StartDate, EndDate "+) "FROM[预约];"。 //空的参数数组 [], onRecordsRetrieved, onError); } //disconnected事件处理程序--当成功断开连接时执行。 //从Connect Bridge集成 //服务器实例 函数 onDisconnected() { console.log('Disconnected')。 } //接收到的记录事件处理程序--当有数据记录时执行。 //从Connect Bridge接收到之前执行的SQL语句。 函数 onRecordsRetrieved(result) { console.log(result)。 cbnode.disconnect(onDisconnected, onError)。 } //开始连接到Connect Bridge集成服务器。 cbnode.connect(onConnected, onError)。
5.使用以下命令通过命令行运行你的app.js。
node app.js
6.app.js脚本将插入一个约会到您的CB游乐场Exchange日历。并检索前100个约会后,从您的日历。
7.如果一切顺利,你应该会看到以下输出。

8.而voi-la,在CB娱乐城Exchange服务器的Outlook网页访问中应该有你的预约显示。

如何查询自己的证件?
下面是一个简单的演练,找出你的凭证。
下载 Connect Bridge游乐场客户端包 你有一个超链接指向它在你的注册电子邮件)。如果你还没有一个免费的游乐场帐户,请随时注册。
解压软件包中的内容,找到CBQueryAnalyzer.bat文件并运行它。

Query Analyzer应用程序会询问你关于注册ODBC驱动程序的问题,(只需要为应用程序,而不是为你的app.js节点项目)。
在左侧连接面板中右击EX2010连接。选择 "编辑连接"。

进入 "高级 "选项卡,并将下划线的凭证复制到你的app.js脚本中。 除了在我们的例子中应该是4433这个端口参数。
