国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

Nodejs使用Mongodb存儲與提供后端CRD服務詳解

2024-05-06 16:45:55
字體:
來源:轉載
供稿:網友

前言

眾所周知JS是腳本語言,腳本語言都需要一個解析器才能運行。對于寫在HTML頁面里的JS,瀏覽器充當了解析器的角色。而對于需要獨立運行的JS,NodeJS就是一個解析器。

每一種解析器都是一個運行環境,不但允許JS定義各種數據結構,進行各種計算,還允許JS使用運行環境提供的內置對象和方法做一些事情。例如運行在瀏覽器中的JS的用途是操作DOM,瀏覽器就提供了document之類的內置對象。而運行在NodeJS中的JS的用途是操作磁盤文件或搭建HTTP服務器,NodeJS就相應提供了fs、http等內置對象。

本文會把一個對象todo對象(有屬性{id,name})存儲到Mongodb,做查詢刪除的測試(Create Remove Delete = CRD)。這個測試包括使用Mongodb Shell,使用CallBack古典風格的訪問代碼,以及使用Await/Async的現代風格的代碼。完成這個這個驗證后,就可以掌握最初步的Mongodb了。

我使用的Nodejs是10.7 。操作系統環境為Mac OS X High Sierra。

準備環境

安裝和運行Mongodb Daemon

brew install mongodbmongodb

訪問驗證

首先執行Mongodb Shell:

mongo

輸入命令,查詢數據庫清單:

> show dbslocal  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, function(err, 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, function(err, 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, function(err, obj) { if (err) throw err; console.log("document deleted"); db.close(); }); });  });})

代碼非常簡單,無需更多解釋。此代碼使用了mongodb模塊,需要首先安裝:

npm init -ynpm 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: 1, name: 'reco' },
  { _id: 5b72ae8a1c674a6ac1c5aa6f, id: 2, name: 'rita' } ]
document deleted

總結:

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 峨山| 乐山市| 义乌市| 塔河县| 从化市| 获嘉县| 镇沅| 南昌县| 佛山市| 自贡市| 遵义县| 雷州市| 伊金霍洛旗| 武邑县| 瓮安县| 富裕县| 清水县| 梁河县| 广宗县| 金华市| 石台县| 屯昌县| 佛山市| 松滋市| 吴忠市| 高雄县| 泰州市| 赤峰市| 宣化县| 和平县| 武宁县| 万盛区| 重庆市| 休宁县| 泾川县| 台北市| 乌审旗| 澄江县| 南通市| 迁安市| 革吉县|