Blog

Blog

PHODAL

MongoDB Nodejs构建CoAP物联网系统

So,在还没适应印度TWU生活的时候,还是写写MongoDB与CoAP版物联网系统的那些事情吧。

开始之前

你需要安装有MongoDB,并保证其能启动。

MongoDB GUI

在Mac OS下面有一个叫Robomongo的工具可以方便我们来调试程序

Node Mongodb

我们用的库是https://github.com/mongodb/node-mongodb-native

版本用的是2.0。

Node MongoDB 示例

在这里引用官方给的例子,于是就有了一次简单的连接测试

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

var url = 'mongodb://localhost:27017/myproject';
MongoClient.connect(url, function(err, db) {
  assert.equal(null, err);
  console.log("Connected correctly to server");

  db.close();
});

这个测试是只是用于测试是否联上了数据库。

MongoDB CoAP数据初始化

于是我们可以同https://github.com/gmszone/iot-coap一样,配置一个简单的环境。

MongoClient.connect(mongodb_url, function (err, db) {
    errorHandler(err);

    var insertDocuments = function (db, callback) {
        var collection = db.collection(config.mongodb_documents);
        collection.insert(config.mongodb_init, function (err, docs) {
            callback(docs);
        });
    };

    var findDocuments = function (db, callback) {
        var collection = db.collection(config.mongodb_documents);
        collection.find(config.mongodb_init[0]).toArray(function (err, docs) {
            if (_.isEmpty(docs)) {
                insertDocuments(db, function () {
                    db.close();
                });
            }
            callback(docs);
        });
    };
    findDocuments(db, function () {
        db.close();
    });
});

接着我们就可以插入这些数据。上面的代码来得有些早,一个简单的插入Documents的代码,如下所示:

var insertDocuments = function(db, callback) {

  var collection = db.collection('documents');
  collection.insert([
    {a : 1}, {a : 2}, {a : 3}
  ], function(err, result) {
    callback(result);
  });
}

而我们只是结合了插入和查询来完整一次简单的数据判断,以免一直插入数据。

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签