65.9K
CodeProject 正在变化。 阅读更多。
Home

通过 MongoDB by Compose 在 Intel® Edison 主板上启用 IBM Bluemix

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (1投票)

2016 年 6 月 20 日

CPOL

3分钟阅读

viewsIcon

9583

本文介绍如何使用 Node.js API 与 IBM Bluemix 云服务建立连接。

获取新的 Intel® IoT Developer Kit,这是一个完整的硬件和软件解决方案,使开发人员能够使用 Intel® Galileo 和 Intel® Edison 开发板创建令人兴奋的新解决方案。访问 Intel® 物联网开发者专区

本文介绍如何使用 Node.js* API 与 IBM* Bluemix* 云服务建立连接。 这包括创建 Bluemix 应用程序,添加 mongoDB* 连接,以及存储和检索数据。

创建 Bluemix 应用程序

  1. 登录到 Bluemix 控制台,选择 DASHBOARD(仪表板),然后单击 CREATE APP(创建应用程序)
  2. 单击 WEB(网络),然后选择 SDK for Node.js(Node.js SDK)。单击 CONTINUE(继续)
  3. 为应用程序命名,然后单击 FINISH(完成)
  4. 在顶部,您可以看到状态“Your app is staging(您的应用程序正在暂存)”。
  5. 暂存完成后,单击左侧面板上的 overview(概述) 以查看仪表板。
  6. 现在,从应用程序仪表板单击 ADD A SERVICE OR API(添加服务或 API)
  7. 在服务页面中,单击 Data and Analytics(数据和分析) 部分中的 MongoDB by Compose 服务。
  8. 在右侧,您可以看到输入 Username(用户名)Password(密码)Host(主机)Port(端口) 的选项。
  9. 如果您没有 Compose 帐户,则可能需要创建一个。单击 Register at Compose(在 Compose 注册)
  10. 注册后,登录到 Compose.io 并创建一个 MongoDB 部署。
  11. 使用默认值,单击 Create Deployment(创建部署)

    创建部署需要几分钟时间;您可以看到如下所示的状态。

    部署完成后,您将被重定向到入门页面,您可以在其中创建数据库。

  12. 通过单击右上角的 Add Database(添加数据库) 创建数据库。为数据库命名,然后单击 Run(运行)
  13. 为数据库添加用户,以便使用连接字符串访问数据库。
  14. 单击 Admin Settings(管理设置) 以获取主机名和端口详细信息。
  15. 在 Bluemix 添加服务页面上,输入 hostname(主机名)port(端口)username(用户名)password(密码) 的详细信息。
  16. 单击创建后,单击出现的弹出窗口上的 RESTAGE(重新暂存)

    重新暂存完成后,您应该在右上角看到一条状态,显示“Your app is running(您的应用程序正在运行)”。

设置开发环境

将 mongodb npm 模块安装到您的项目中。

npm install mongodb

设置 mongodb 连接

为该模块创建一个节点引用变量和客户端对象,以建立数据库连接。

var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient

创建 mongodb 连接

connect 函数返回一个 db 对象,其中包含 collection 对象。 collection 对象用于从云中插入和检索数据。

可以从 Bluemix 控制台获取连接 URL。 从应用程序仪表板中选择 MongoDB by Compose 服务,然后单击 Show Credentials(显示凭据)。

您可以使用这些凭据创建连接 URI。 形成如下所示的 uri,以便在 node 应用程序中使用

mongodb://<user>:<password>@<uri>:<port>/iot-compose?ssl=true

示例

var uri = mongodb://iot-kona:intel123@aws-us-east-1-portal.11.dblayer.com:27832/iot-compose?ssl=true

复制凭据下的 uri 并将其传递给 connect 函数

db = MongoClient.connect(uri, function(err, db) {});

存储数据

数据可以存储为 JSON 对象或 JSON 对象数组。

data = {‘sensor-id’ : ‘sens341’, ‘value’ : 65.5}
db = MongoClient.connect(config.url, function(err, db) {
	collection = db.collection(config.db);
        collection.insert(data, function(err, result) {});
});

查询数据

基于时间戳的查询

dataQuery = { "timestamp": { $gt: readQuery.timestamp } };

基于 Sensorid 的查询

dataQuery = { "sensor_id": { $eq: readQuery.sensor_id } }
Run query
collection = db.collection(self.config.db);
collection.find(dataQuery).toArray( function(err, items) {
if(!err) 
console.log(JSON.stringify(items, null, '  '));
});

参考文献

© . All rights reserved.