• node.js基础:数据存储


      无服务器的数据存储

        内存存储

    var http = require('http');
    var count = 0; //服务器访问次数存储在内存中
    http.createServer(function(req,res){
    	res.write('hello'+ ++count);
    	res.end();
    }).listen(3000);    
    

        基于文件的存储

        node.js中主要用fs文件系统模块来管理文件的存储。

        文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。您可以通过调用require('fs')来获取该模块。文件系统模块中的所有方法均有异步和同步版本。

        在繁重的任务中,强烈推荐使用这些函数的异步版本.同步版本会阻塞进程,直到完成处理,也就是说会暂停所有的连接。 

    var fs = require('fs');
    //读取一个文件的全部内容
    fs.readFile('./node.txt',function(err,data){
    	if(err) throw err;
    	console.log(data); //data就是文件的内容
    });
    //将数据写入一个文件, 如果文件原先存在,会被替换。 data 可以是一个string,也可以是一个原生buffer。
    fs.writeFile('./node.txt','hello','utf8',function(err) {
    	if(err) throw err;
    	console.log('Saved');
    });
    

      数据库管理系统(DBMS)

        关系型数据库:MySQLPostgreSQL

        NoSQL数据库:RedisMongoDBMongoose

      MySQL

      使用第三方mysql模块让node.js跟MySQL交互

    npm install mysql

      设置数据库

    //引入mysql模块
    var mysql = require('mysql');
    //设置数据库
    var db = mysql.createConnection({
    	host:     '127.0.0.1',
    	user:     'root',
    	password: '123456',
    	database: 'shop' //数据库名称
    });
    db.connect();
    //查询数据
    db.query('select * from tb_user',function(err,rows,fields){
        if(err) throw err;
        console.log( rows[0].tel ); //rows为查询到的数据集数组
    });
    db.end();
    

       MongoDB

       安装

    npm install mongodb

       连接MongoDB

    var mongodb = require('mongodb');
    var server = new mongodb.Server('127.0.0.1', 27017, {});
    var client = new mongodb.Db('mydatabase', server, {w: 1});
    

       访问MongoDB集合

    client.open(function(err){
        if(err) throw err;
        client.collection('test_insert', function(err, collection){
            if(err) throw err;
            //..
        });
    });
    

       将文档插入集合中

    collection.insert({
        "title": "I like cake",
        "body": "It is quite good."
    },{safe: true }, function(err, documents) {
        if(err) throw err;
        console.log('Document ID is: ' + documents[0]._id);
    });
    

       用文档ID更新数据

    var _id = new client.bson_serializer .ObjectID('4e650d344ac74b5a01000001');
    collection.update({_id: _id},{$set:{"title": "I ate too much cake"}},{safe: true},function(err){
        if (err) throw err;
    });
    

       搜索文档

    collection.find({"title": "I ate too much cake"}).toArray(function(err,results){
        if(err) throw err;
        console.log(results);
    });
    

       删除文档

    var _id = new client.bson_serializer.ObjectID('4e650d344ac74b5a01000001');
    collection.remove({_id: _id},{safe:true},function(err){
        if(err) throw err;
    });
    

       Mongoose

       Mongoose是一个抽象的MongoDB数据库访问API,在底层处理细节,可以加快开发速度,同时维护更少的代码。

    npm install mongoose

       连接的打开和关闭

    //连接
    var mongoose = require('mongoose');
    var db = mongoose.connect('mongodb://localhost/tasks'); //tasks为数据库
    //打开
    mongoose.disconnect();
    

       注册schema

    var Schema = mongoose.Schema;
    var Tasks = new Schema({
    	project: String,
    	description: String
    });
    mongoose.model('Task', Tasks);
    

       添加任务

    var Task = mongoose.model('Task');
    var task = new Task();
    task.project = 'Bikeshed';
    task.description = 'Paint the bikeshed red.';
    task.save(function(err) {
    	if (err) throw err;
    	console.log('Task saved.');
    });
    

       搜索文档

    var Task = mongoose.model('Task');
    Task.find({'project': 'Bikeshed'}, function(err, tasks) {
    	for (var i = 0; i < tasks.length; i++) {
    		console.log('ID:' + tasks[i]._id);
    		console.log(tasks[i].description);
    	}
    });
    

       更新文档

    var Task = mongoose.model('Task');
    Task.update({_id: '4e650d344ac74b5a01000001'},{description:'Paint the bikeshed green.'},{multi:false},function(err,rows_updated){
    	if (err) throw err;
    	console.log('Updated.');
    });
    

       删除文档

    var Task = mongoose.model('Task');
    Task.findById('4e650d344ac74b5a01000001',function(err,task){
    	task.remove();
    });
    

       如果喜欢基于SQL的处理方式,关系型数据库管理系统MySQL和PostgreSQL都得到了很好的支持。

      如果发现SQL在性能或灵活性上表现欠佳,Redis和MongoDB都是不错的可选项。MongoDB是极佳的通用DBMS,而Redis擅长处理变化频繁,相对比较简单的数据。

  • 相关阅读:
    网站设计
    keepass口令管理实践
    Wireshark实践
    SSH
    Nmap
    python模拟进程状态
    简易计算器
    2020-2021-1 20201210 《信息安全专业导论》第十周学习总结
    助教总结 第八章
    Chapter 7. Chapter 8.
  • 原文地址:https://www.cnblogs.com/eyeear/p/4744130.html
Copyright © 2020-2023  润新知