微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析

本文实例讲述了Node.js中sqlite3和MongoDB的用法分享给大家供大家参考,具体如下:

setup.js:初始化数据库

rush:js;"> var util = require('util'); var async = require('async'); //npm install async var notesdb = require('./nodesdb-sqlite3'); // var notesdb = require('./notesdb-mongoose'); notesdb.connect(function(error){ if (error) throw error; }); notesdb.setup(function(error){ if (error){ util.log('ERROR ' + error); throw error; } async.series([ //async.series函数可以控制函数按顺序执行,从而保证最后的函数在所有其他函数完成之后执行 function(cb){ notesdb.add("test","testtest",function(error){ if (error) util.log('ERROR ' + error); cb(error); }); } ],function(error,results){ if (error) util.log('ERROR ' + error); notesdb.disconnect(function(err){}); } ); });

nodesdb-sqlite3.js

sqlite3一个轻量级的进程内sql引擎

它是一个无服务器且无需配置的sql数据库引擎,仅仅是作为一个独立的库被链接到应用程序上

npm install sqlite3 安装此模块之前先在系统上安装sqlite3http://www.sqlite.org/download.html 下载

rush:js;"> //数据库接口库 var util = require('util'); var sqlite3 = require('sqlite3'); sqlite3.verbose(); var db = undefined; /* 数据库名是直接硬编码的,所以当调用connect和setup函数时,当前目录中就会生成chap06.sqlite3文件 */ exports.connect = function(callback){ db = new sqlite3.Database("chap06.sqlite3",sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE,function(err){ if (err){ util.log('FAIL on creating database ' + err); callback(err); } else { callback(null); } }); } //此处的disconnect函数是空的 exports.disconnect = function(callback){ callback(null); } exports.setup = function(callback){ db.run("CREATE TABLE IF NOT EXISTS notes " + "(ts DATETIME,author VARCHAR(255),note TEXT)",function(err){ if (err){ util.log('FAIL on creating table ' + err); callback(err); } else { callback(null); } }); } exports.emptyNote = {"ts": "",author: "",note: ""}; exports.add = function(author,note,callback){ db.run("INSERT INTO notes (ts,author,note) " + "VALUES (?,?,?);",[new Date(),note],function(error){ if (error){ util.log('FAIL on add ' + error); callback(error); } else { callback(null); } }); } /* run函数接受一个字符串参数,其中?表示占位符,占位符的值必须通过一个数组传递进来 调用者提供了一个回调函数,然后通过这个回调函数来声明错误 */ exports.delete = function(ts,callback){ db.run("DELETE FROM notes WHERE ts = ?;",[ts],function(err){ if (err){ util.log('FAIL to delete ' + err); callback(err); } else { callback(null); } }); } exports.edit = function(ts,callback){ db.run("UPDATE notes " + "SET ts = ?,author = ?,note = ? " + "WHERE ts = ?",[ts,ts],function(err){ if (err){ util.log('FAIL on updating table ' + err); callback(err); } else { callback(null); } }); } exports.allNotes = function(callback){ util.log(' in allnote'); db.all("SELECT * FROM notes",callback); } exports.forAll = function(doEach,done){ db.each("SELECT * FROM notes",function(err,row){ if (err){ util.log('FAIL to retrieve row ' + err); done(err,null); } else { doEach(null,row); } },done); } /* allNotes和forAll函数是操作所有数据的两种方法,allNotes把数据库中所有的数据行收集到一个数组里, 而forAll方法可以接受两个回调函数,每当从数据集中拿一行数据,回调函数doEach都会执行一遍,当读完所有数据时,回调函数done就会执行 */ exports.findNoteById = function(ts,callback){ var didOne = false; db.each("SELECT * FROM notes WHERE ts = ?",row){ if (err){ util.log('FAIL to retrieve row ' + err); callback(err,null); } else { if (!didOne){ callback(null,row); didOne = true; //保证回调函数只被执行一次 } } }); }

notesdb-mongoose.js

MongoDB是nosql数据库的领头羊之一,"可扩展、高性能、开源、面向文档的数据库",它使用JSON风格的文档。

Mongoose是用于访问MongoDB的模块之一,它是一个对象建模工具,意味着你的程序负责定义模式对象来描述数据,

而Mongoose负责数据到MongoDB的存储。

Mongoose对于Node和MongoDB而言是一个非常强大的对象建模工具,使用嵌入式文档,是一个类型灵活的系统,

适用于字段输入、字段验证、虚拟字段等。

MongoDB在Windows下安装部署 :

安装Mongoose模块

Mongoose不是唯一一个在node中使用MongoDB的工具。

app.js

show.js

前台页面在views-sqlite3目录下

layout.html

viewnotes.html

rush:xhtml;"> <% include layout.html %> <%=new Date(note.ts).toString()%>: by <%=note.author%>

<%=note.note%>


addedit.html

rush:xhtml;"> <% include layout.html %>
<% } %>

login.html

rush:xhtml;"> <% include layout.html %>
Click the Login to log in.

node setup.js

node app.js

希望本文所述对大家nodejs程序设计有所帮助。

原文地址:https://www.jb51.cc/nodejs/39976.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐