zoukankan      html  css  js  c++  java
  • NodeJs + mongodb模块demo

    代码比较通俗易懂,但是我还是在这个过程中浪费了不少时间,也算是看到了nodejs中异步的一个小坑。未来的坑还有很多,慢慢找坑填坑吧。

    参考资料如下:

    1、断言模块 : https://nodejs.org/api/assert.html   

    2、mongodb模块:https://github.com/mongodb/node-mongodb-native

    废话不多说了,发完代码睡觉了,有兴趣的朋友可以持续关注本系列。


     1 //加载nodejs中的mongodb模块
     2 var MongoClient = require('mongodb').MongoClient;
     3 
     4 //加载assert(断言模块)参考地址:https://nodejs.org/api/assert.html  
     5 var assert = require('assert');
     6 
     7 // mongodb HOST地址 test表示当前所在的数据库
     8 var url = 'mongodb://localhost:27017/test';
     9 //启动mongodb服务,建立连接
    10 MongoClient.connect(url, function(err, db) {
    11   assert.equal(null, err);
    12   console.log("Connected correctly to server");
    13 
    14   //同步嵌套的写法
    15   insertDocuments(db, function() {
    16     updateDocument(db, function() {
    17       deleteDocument(db, function() {
    18         findDocuments(db, function() {
    19           db.close();
    20         });
    21       });
    22     });
    23   });
    24 
    25   //仔细观察同步与异步的CURD执行顺序。尝试在异步后添加db.close(); 思考为什么报错。
    26   //异步的写法
    27   // insertDocuments(db, function(){});
    28   // updateDocument(db, function(){});
    29   // deleteDocument(db, function(){});
    30   // findDocuments(db, function(){});
    31 
    32 
    33 
    34 
    35 });
    36 
    37 
    38 
    39 //下面演示CURD的操作
    40 var insertDocuments = function(db, callback) {
    41     //得到文档集合
    42     var collection = db.collection('rover');
    43     //构造数据
    44     var testData = [{a:1},{a:2},{a:3}];
    45     //插入数据
    46     collection.insertMany(testData, function(err, result) {
    47         assert.equal(err, null);
    48         assert.equal(3,result.result.n);
    49         assert.equal(3,result.ops.length);
    50         console.log('Inserted 3 Documents into the document collections');
    51         callback(result);
    52 
    53     });
    54 
    55 }; 
    56 
    57 
    58 //Updating a Documents  修改操作
    59 var updateDocument = function(db, callback) {
    60     //得到文档集合
    61     var collection = db.collection('rover');
    62     //修改文档集合
    63     var update = {a:2};
    64     var change = {$set:{a:5555}};
    65     collection.updateOne(update,change, function(err, result) {
    66         assert.equal(err,null);
    67         assert.equal(1, result.result.n);
    68         console.log("Updated the document with the field a equal to 2");
    69         callback(result);
    70     })
    71 };
    72 
    73 //Delete a document 
    74 var deleteDocument = function(db, callback) {
    75   // Get the documents collection
    76   var collection = db.collection('rover');
    77   // Insert some documents
    78   collection.deleteOne({ a : 3 }, function(err, result) {
    79     assert.equal(err, null);
    80     assert.equal(1, result.result.n);
    81     console.log("Removed the document with the field a equal to 3");
    82     callback(result);
    83   });
    84 };
    85 
    86 //读取数据
    87 var findDocuments = function(db, callback) {
    88   // Get the documents collection
    89   var collection = db.collection('rover');
    90   // Find some documents
    91   collection.find({}).toArray(function(err, docs) {
    92     // assert.equal(err, null);
    93     // assert.equal(2, docs.length);
    94     console.log("Found the following records");
    95     console.dir(docs);
    96     callback(docs);
    97   });
    98 };
  • 相关阅读:
    【java编程】java的关键字修饰符
    【分布式锁】redis实现
    【java高级编程】JDK和CGLIB动态代理区别
    【druid 】数据库连接池
    【druid 】数据库连接池-sql解析
    【mysql】Mha实现高可用数据库架构
    【mysql】工具使用
    7.7 服务远程暴露
    7.6 服务远程暴露
    7.5 zookeeper客户端curator的基本使用 + zkui
  • 原文地址:https://www.cnblogs.com/roverliang/p/5304413.html
Copyright © 2011-2022 走看看