Blog

Blog

PHODAL

构建基于CoAP SQLite Nodejs的物联网之数据库

在经历了几次重构之后,我们的IoT终于开始有个好的代码结构,再经过几次修正之后,我们就可以很愉快地发出第一个版本,v0.1或许将会是Nodejs的一个库。

Node Module

这说里Module的意义是因为我们需要在别的地方引用到db_helper这个库,也就是下一小节要的讲的内容。

这样我们就可以在server.js类似于这样去引用这个js库。

var DBHelper = require('./db_helper.js');
DBHelper.initDB();

而这样调用的前提是我们需要去声明这样的module,为了方便地导出函数功能调用。

function DBHelper(){
}
DBHelper.initDB = function(){};
module.exports = DBHelper;

虽然这里的功能很简单,简单也能做我们想做的事情。

Node Sqlite3

还是继续用到了SQLite3,只是这里用到的只是基本的查询和创建。

一个简单的initDB函数

var db = new sqlite3.Database(config["db_name"]);
var create_table = 'create table if not exists basic (' + config["db_table"] + ');';

db.serialize(function() {
    db.run(create_table);
    _.each(config["init_table"], function(insert_data) {
        db.run(insert_data);
    });
});
db.close();

首先从配置中读取db_name,接着创建table,然后调用underscore的each方法,创建几个数据。配置如下所示

config = {
    "db_name": "iot.db",
    "db_table": "id integer primary key, value text, sensors1 float, sensors2 float",
    "init_table":[
        "insert or replace into basic (id,value,sensors1,sensors2) VALUES (1, 'is id 1', 19, 20);",
        "insert or replace into basic (id,value,sensors1,sensors2) VALUES (2, 'is id 2', 20, 21);"
    ],
    "query_table":"select * from basic;"
};

而我们在上一篇CoAP与物联网系统之返回JSON所提到的url查询所做的事情便是

DBHelper.urlQueryData = function (url, callback) {
    var db = new sqlite3.Database("iot.db");

    var result = [];
    console.log("SELECT * FROM basic where " + url.split('/')[1] + "=" + url.split('/')[2]);
    db.all("SELECT * FROM basic where " + url.split('/')[1] + "=" + url.split('/')[2], function(err, rows) {
        db.close();
        callback(JSON.stringify(rows));
    });
};

将URL传进来,便解析这个参数,接着再放到数据库中查询,再回调回结果。

这样我们就可以构成之前所说的查询功能,而我们所谓的post功能似乎也可以用同样的方法加进去。

关于我

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

微信公众号(Phodal)

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

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

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

开源深度爱好者

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

联系我: h@phodal.com

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

标签