设为首页 收藏本站
查看: 1048|回复: 0

[经验分享] NodeJs + mongodb模块demo

[复制链接]

尚未签到

发表于 2017-2-24 09:48:05 | 显示全部楼层 |阅读模式
  代码比较通俗易懂,但是我还是在这个过程中浪费了不少时间,也算是看到了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 };

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346461-1-1.html 上篇帖子: NodeJS常用模块介绍 下篇帖子: windows下搭建绿色nodejs运行环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表