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

新书《前端架构:从入门到微前端》

《前端架构:从入门到微前端》是一本围绕前端架构的实施手册,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。本书通过系统地介绍前端架构世界的方方面面,来帮助前端工程师更好地进行系统设计。

前端架构包含以下五部分内容:

  • 设计:讲述了架构设计的模式,以及设计和制定前端工作流。
  • 基础:通过深入构建系统、单页面应用原理、前端知识体系等,来构建出完整的前端应用架构体系。
  • 实施:通过与代码结构的方式,介绍如何在企业级应用中实施组件化架构、设计系统和前后端分离架构。
  • 微前端:引入6种微前端的概念,以及如何划分、设计微前端应用,并展示了如何实现这6种微前端架构。
  • 演进:提出更新、迁移、重构、重写、重新架构等架构演进方式,来帮助开发人员更好地设计演进式架构。
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

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

开源深度爱好者

出版有《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 与我沟通

标签