couchDB学习笔记
couchDB是一个非常易用的nosql数据库,到官网下载安装并启动它,然后新建一JS文件:
var http = require('http'); var options = { port: 5984, method: 'GET', // path:"/_all_dbs" }; //这个回调果真只有一个参数,即http.createServer(function(req, res) {}) var req = http.request(options, function(res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); var body = "" res.on('data', function (chunk) { body += chunk }); res.once("end", function(){ var json = JSON.parse(body); console.log(json) }) }); req.end() req.on('error', function(e) { console.log('problem with request: ' + e.message); });
然后用node.js打开它!控制台输出如下消息,表示成功:
STATUS: 200 HEADERS: {"server":"CouchDB/1.2.0 (Erlang OTP/R14B04)","date":"Fri, 24 Aug 2012 02:53:18 GMT","content-type":"text/plain; charset=utf-8","content-length":"40"," cache-control":"must-revalidate"} { couchdb: 'Welcome', version: '1.2.0' }
然后我们修改一下上面的options对象,查看里面已经有多少个数据库
var options = { port: 5984, method: 'GET', path:"/_all_dbs" };
会输出一个数组
[ '_replicator', '_users' ]
创建一个数据库,为PUT请求,path为数据库名
var options = { port: 5984, method: 'PUT', path:"/aaa" };
输出ok=true表示成功
{ ok: true }
注,不能重复创建相同数据库,我们试再发一次上面的请求,会返回上面请求
{ error: 'file_exists', reason: 'The database could not be created, the file already exists.' }
删除一个数据库就用DELETE请求,path为数据库名
var options = { port: 5984, method: 'DELETE', path:"/aaa" };
在一个数据库内插入一条记录,因为上面的aaa被我们删掉了, 我们就再搞个albums
var options = { port: 5984, method: 'PUT', path:"/albums" };
插入新记录,记录在nosql数据库大多数称之为文档.它要求有一个UUID,你就随便造一个吧
var http = require('http'); //创建一个名为baseball的数据库 var options = { port: 5984, method: 'PUT', path:"/albums/1" }; var req = http.request(options, function(res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); var body = "" res.on('data', function (chunk) { body += chunk }); res.once("end", function(){ var json = JSON.parse(body); console.log(json) }) }); req.setHeader("Content-Type", "application/json") //这时请补上文档内容 req.write(JSON.stringify({ "title":"There is Nothing Left to Lose", "artist":"Foo Fighters" })) req.end() req.on('error', function(e) { console.log('problem with request: ' + e.message); });
当然,上面这样搞出来的UUID太不安全了,因此你可以利用couthDB给你的UUID
var options = { port: 5984, method: 'GET', path:"/_uuids" };
我们再把刚才保存的文档取出来吧,就是数据库加ID名,GET请求
var options = { port: 5984, method: 'GET', path:"/albums/1" };
机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年