加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Nodejs:使用Mongodb存储和提供后端CRD服务

发布时间:2020-12-13 12:44:07 所属栏目:百科 来源:网络整理
导读:table class="text" tr class="li1" td class="ln"pre class="de1"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
<tr class="li1">
<td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

show dbs ? ? local ? ? ? ? ? 0.000GB ? 创建一个数据库 ? ? ? use todos ? ? (若database不存在,则会创建一个,此时若不做任何操作直接退出,则MongoDB会删除该数据库) ? ? ? db.todos.insert({id:1,name:"reco"}) ? ? db.todos.insert({id:2,name:"rita"}) ? 查询 : ? ? ? db.todos.find() ? ? ? { "_id" : ObjectId("5b727c0846b6c71a98d3af52"),"id" : 1,"name" : "reco" } ? ? { "_id" : ObjectId("5b727c7046b6c71a98d3af53"),"id" : 2,"name" : "reta" } ? 删除记录: ? ? ? db.todo.remove({id:1}) ? ? 删除数据库 ? ? ? db.todo.drop() ? ? ## 使用nodejs方式访问Mongodb ? 使用nodejs执行类似Shell对对象的CRD,代码如下: ? ? ? var MongoClient = require('mongodb').MongoClient; ? ? var url = "mongodb://localhost:27017/todos"; ? ? MongoClient.connect(url,function(err,db) { ? ? ? if (err) throw err; ? ? ? console.log("Database created!"); ? ? ? var dbo = db.db("todos"); ? ? ? // var myobj = { id: 1,name: "reco" }; ? ? ? // dbo.collection("todo").insertOne(myobj,res) { ? ? ? // ? if (err) throw err; ? ? ? // ? console.log("1 document inserted"); ? ? ? // ? db.close(); ? ? ? // }); ? ? ? ?var myobj = [ ? ? ? ? { id: 1,name: 'reco'},? ? ? ? { id: 2,name: 'rita'},? ? ? ]; ? ? ? dbo.collection("todo").insertMany(myobj,res) { ? ? ? ? if (err) throw err; ? ? ? ? console.log("Number of documents inserted: " + res.insertedCount); ? ? ? ? dbo.collection("todo").find({}).toArray(function(err,result) { ? ? ? ? ? ? if (err) throw err; ? ? ? ? ? ? console.log(result); ? ? ? ? ? ? ? var myquery = { id: 1 }; ? ? ? ? ? ? ? ? ? dbo.collection("todo").deleteMany(myquery,obj) { ? ? ? ? ? ? ? ? ? ? if (err) throw err; ? ? ? ? ? ? ? ? ? ? console.log("document deleted"); ? ? ? ? ? ? ? ? ? ? db.close(); ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? }); ? ? ? ? ? }); ? ? }) ? 代码非常简单,无需更多解释。此代码使用了mongodb模块,需要首先安装: ? ? ? ? npm init -y ? ? npm i mongodb --save ? ? 然后使用`node index.js`运行即可看到效果: ? ? ? Database created! ? ? Number of documents inserted: 2 ? ? [ { _id: 5b72ab9e3245f169ef5f43d2,id: 1,name: 'reco' },? ? ? { _id: 5b72ab9e3245f169ef5f43d3,id: 2,name: 'rita' } ] ? ? document deleted ? ## 利用高级异步特性 ? 使用Await/Async特性,可以有效的减少代码中的回调地狱现象。同样的功能,可以使用这样的代码: ? ? ? const MongoClient = require('mongodb').MongoClient; ? ? const connectionString = 'mongodb://localhost:27017'; ? ? (async () => { ? ? ? ? const client = await MongoClient.connect(connectionString,? ? ? ? ? ? { useNewUrlParser: true }); ? ? ? ? const dbo = client.db('todos'); ? ? ? ? try { ? ? ? ? ? ?var res = await dbo.collection('todo').insertMany( ? ? ? ? ? ? ? ? [{id:1,name:"reco"},{id:2,name:"rita"}]); ? ? ? ? ? ?console.log("Number of documents inserted: " + res.insertedCount); ? ? ? ? ? ?var r = await dbo.collection("todo").find().toArray() ? ? ? ? ? ?console.log(r); ? ? ? ? ? ?var myquery = { id: 1 }; ? ? ? ? ? ?var r = await dbo.collection("todo").deleteMany(myquery) ? ? ? ? ? ?console.log("document deleted"); ? ? ? ? } ? ? ? ? finally { ? ? ? ? ? ? client.close(); ? ? ? ? } ? ? })().catch(err => console.error(err)); ? ? 执行此代码,输出如下: ? ? ? Number of documents inserted: 2 ? ? [ { _id: 5b72ae8a1c674a6ac1c5aa6e,? ? ? { _id: 5b72ae8a1c674a6ac1c5aa6f,name: 'rita' } ] ? ? document deleted(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

<table class="text">

    推荐文章
      热点阅读