精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用 Node.js 和 MongoDB 進行 CRUD?

譯文
開發(fā) 開發(fā)工具 MongoDB
Node.js和MongoDB提供了非常快速和靈活的開發(fā)體驗。看看我們在MongoDB中使用Node創(chuàng)建、讀取、更新和刪除文檔是多么的快速和容易。

?[[405702]]?

【51CTO.com快譯】MongoDB是最早的NoSQL數(shù)據(jù)存儲之一,也是目前流行的NoSQL數(shù)據(jù)存儲。Node.js的JavaScript運行時繼續(xù)在后端開發(fā)中占據(jù)主導(dǎo)地位。它們共同構(gòu)成了一個高度靈活和動態(tài)的技術(shù)堆棧。

Node.js和MongoDB允許快速實現(xiàn)基本的應(yīng)用程序功能,如CRUD(創(chuàng)建、讀取、更新和刪除)操作。在本文中,我們將使用最新的 Node.js MongoDB 驅(qū)動程序(版本 3.6+)來了解 CRUD 基礎(chǔ)知識。

Node.js 和 MongoDB 設(shè)置

先在系統(tǒng)上安裝Node.js和MongoDB,以及一個包含`curl`可用命令的命令行。(如果你使用的是 2018 年以后的 Linux、MacOS 或 Windows 10 版本,則很可能使用[curl](https://curl.se/)。)

下載系統(tǒng)適用的MongoDB后,可以將其安裝為服務(wù)或?qū)⑵渥鳛榭蓤?zhí)行文件運行。無論哪種方式,請通過打開命令行并運行`mongo`命令來確保 MongoDB 正在運行。(如果沒有作為服務(wù)安裝,可能需要將該命令添加到路徑中。)這使你可以訪問系統(tǒng)上運行的 MongoDB 實例。

接下來,確保安裝了 Node.js 和 npm。在命令行中,鍵入`node -v`。如果安裝了 Node.js,將獲得版本號。如果沒有,則需要下載Node.js并安裝到機器上。

Curl允許從命令行執(zhí)行簡單的HTTP請求。例如,運行`curl www.google.com`將收到來自 Google 主頁的標(biāo)記。

創(chuàng)建一個 Node.js 項目

在文件夾中創(chuàng)建一個npm init類型的新項目。項目名稱可以使用node-mongo-intro。當(dāng)然,你也可以接受其他缺省值。

添加所需的依賴項。在剛創(chuàng)建的項目目錄中,鍵入`npm install mongodb polka --save`. 這將安裝 MongoDB 的 Node.js 驅(qū)動程序(允許項目訪問 MongoDB)和用于處理 HTTP 請求的Polka HTTP 服務(wù)器。

編輯 package.json 文件以包含啟動腳本,如Listing 1 所示。

Listing 1. A start script 

"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node src/index" // <-- add this line
},

接著創(chuàng)建一個 /node-mongo-intro/src/index.js 文件,并將Listing 2 的內(nèi)容放入其中。

Listing 2. HTTP test in index.js 

const polka = require('polka');

polka()
.get('/create', (req, res) => {
res.end(`works`);
})
.listen(3000, err => {
if (err) throw err;
console.log(`> Running on localhost:3000`);
});

現(xiàn)在用`npm run start`啟動服務(wù)器。服務(wù)器將在端口3000上偵聽。你可以使用curl http://localhost:3000/create進行測試。測試后應(yīng)該會看到“works”的響應(yīng)(以及一些curl請求信息)。

在 MongoDB 中插入一條記錄

現(xiàn)在我們將執(zhí)行一個簡單的插入。這是 CRUD 中的 “C”。將`index.js`文件更新為如Listing 3 所示。

 Listing 3. A simple insert 

const polka = require('polka');
const { MongoClient } = require("mongodb");

polka()
.get('/create', (req, res) => {
const client = new MongoClient("mongodb://localhost:27017");
async function run() {
try {
await client.connect();
const database = client.db("intro");
const collection = database.collection("quotes");

const result = await collection.insertOne({"quote":"Life is what happens to you while you're busy making other plans."});
res.end(JSON.stringify(result));
} catch (e) {
console.log("Error: " + e);
} finally {
await client.close();
}
}
run().catch(console.dir);
})
.listen(3000, err => {
if (err) throw err;
console.log(`> Running on localhost:3000`);
});

Listing 3 中的代碼打開到本地系統(tǒng)上 MongoDB 實例的連接,然后指定一個數(shù)據(jù)庫 ( `"intro"`) 和集合 ( `"quotes"`)。集合類似于關(guān)系數(shù)據(jù)庫中的表。

接下來,代碼插入一個文檔(類似于 SQL 記錄)并在一個HTTP響應(yīng)中發(fā)送結(jié)果。

運行插入

首先,按 Ctrl-C 停止并重新啟動節(jié)點服務(wù)器。然后在命令行運行這個命令: 

npm run startcurl http : //localhost:3000/create

驗證插入

如果你掌握 SQL 技術(shù),你會注意到的一件事是,我們在進行這項工作之前沒有創(chuàng)建表和模式。我們甚至沒有創(chuàng)建我們使用的數(shù)據(jù)庫。因為 MongoDB 為我們完成了這些所需的工作,它可以接受任何類型的結(jié)構(gòu)化鍵值文檔到集合中。

使用mongo打開mongo shell,并輸入命令use intro。這將切換到自動創(chuàng)建的intro數(shù)據(jù)庫。現(xiàn)在輸入db.quotes.find()命令,將看到該記錄被插入。注意MongoDB會在“_id”字段上自動生成一個唯一的ID。你可以通過在文檔上自己指定一個來覆蓋它。

在MongoDB中檢索文檔

現(xiàn)在讓我們把文件拿出來。添加如 Listing 4所示的.get()映射。這是CRUD中的“R”。

Listing 4. Retrieve a document 

.get('/retrieve', (req, res) => {
const client = new MongoClient("mongodb://localhost:27017");
async function run() {

try {
await client.connect();
const database = client.db("intro");
const collection = database.collection("quotes");

const cursor = collection.find({}, {});

let items = [];
await cursor.forEach(function(doc){
items.push(doc);
});
res.end(JSON.stringify(items));
} catch (error){
console.warn("ERROR: " + error);
if (errCallback) errCallback(error);
} finally {
await client.close();
}
}
run().catch(console.dir);
})

Listing 4 以與Listing 3 相同的方式連接,然后發(fā)出一個`find`命令,并帶有一個空查詢。這意味著它匹配所有文檔。接下來,它接收響應(yīng)并將其編組到一個數(shù)組中以發(fā)送回客戶端。

注意,游標(biāo)操作和集合是異步的。清單3中的collection.insertOne也是如此。我們使用await關(guān)鍵字來處理這些,而不使用嵌套的回調(diào)。

使用curl http://localhost:3000/retrieve測試新端點(在停止并再次啟動服務(wù)器之后),將看到返回的集合。

MongoDB中更新文檔

現(xiàn)在是CRUD中的“U”。Listing 5處理了這一點。

Listing 5. Updating a document 

.get('/update', (req, res) => {
const client = new MongoClient("mongodb://localhost:27017");
async function run() {
try {
await client.connect();
const database = client.db("intro");
const collection = database.collection("quotes");

const updateDoc = {
$set: {
author:
"John Lennon",
},
};

const result = await collection.updateOne({}, updateDoc, {}); // <-- empty filter matches all docs
res.end("Updated: " + result.modifiedCount);
} catch (e) {
errCallback(e);
} finally {
await client.close();
}
}
run().catch(console.dir);
})

Listing 5 再次連接到數(shù)據(jù)庫,然后創(chuàng)建一個更新文檔。本文檔通過指定一個`$set`包含要更改的字段和值的對象的字段來告訴 MongoDB 要更改什么。在我們的例子中,我們將該`author`字段設(shè)置為`"John Lennon"`,即相關(guān)引用的引用者。

接下來,Listing 5 使用該`updateOne()`函數(shù)來執(zhí)行更新文檔。最后一個空對象參數(shù)是過濾器。在這種情況下,我們希望匹配所有文檔,因此我們將其留空。

最后,我們發(fā)回我們更新的文檔數(shù)量(一個)。

MongoDB中刪除文檔

CRUD的最后一個字母是“D”,表示刪除。

刪除操作的映射如Listing 6所示。

Listing 6. Deleting a document 

.get('/delete', (req, res) => {
const client = new MongoClient("mongodb://localhost:27017");
async function run() {
try {
await client.connect();
const database = client.db("intro");
const collection = database.collection("quotes");
const query = { };
const result = await collection.deleteOne(query);
if (result.deletedCount === 1) {
res.end("Successfully deleted one document.");
} else {
res.end("Deleted 0 documents.");
}
} finally {
await client.close();
}
}

這里我們再次使用空查詢來匹配`"quotes"`集合中的所有文檔。async`collection.deleteOne()`函數(shù)返回一個結(jié)果,告訴我們有多少文檔受到影響。

重新啟動服務(wù)器 (Ctrl-C) 并發(fā)出新的 curl 命令: 

curl http://localhost:3000/delete

您可以使用curl http://localhost:3000/retrieve來驗證文檔是否已被刪除。

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】


責(zé)任編輯:黃顯東 來源: infoworld.com
相關(guān)推薦

2024-03-22 11:40:40

Node.jsNodeCRUD

2016-08-25 21:28:04

前端node截圖

2011-09-09 14:23:13

Node.js

2021-07-30 11:20:53

JavaScriptNode.jsWeb Develop

2022-08-22 07:26:32

Node.js微服務(wù)架構(gòu)

2021-07-03 17:43:03

Node.jsNode變量

2013-03-28 14:54:36

2022-09-12 15:58:50

node.js微服務(wù)Web

2020-08-05 08:31:51

SSL TLSNode.js

2017-04-18 09:27:14

Visual StudNode.js調(diào)試

2021-08-20 16:05:28

JavaScript node.js 應(yīng)用安全

2022-08-28 16:30:34

Node.jsDocker指令

2013-11-01 09:34:56

Node.js技術(shù)

2023-01-10 14:11:26

2015-03-10 10:59:18

Node.js開發(fā)指南基礎(chǔ)介紹

2023-04-18 15:18:10

2011-07-26 11:07:08

JavaScript

2018-08-23 16:18:59

2021-07-16 04:56:03

NodejsAddon

2021-03-03 06:39:05

Nodejs前端開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品xx| 国产精品无码天天爽视频| 中文在线资源| 国产日韩欧美一区二区三区综合| 高清在线视频日韩欧美| 人妻 日韩 欧美 综合 制服| 蜜桃精品在线| 亚洲在线免费播放| 日本一区二区在线视频| 99久久精品无免国产免费| 欧美freesextv| 亚洲第一网站免费视频| 自拍偷拍99| 天堂网在线中文| 久久精品理论片| 91精品国产乱码久久久久久蜜臀| 催眠调教后宫乱淫校园| 欧美va在线观看| 欧美激情综合在线| 国产区一区二区三区| 88av在线视频| 久久精品一本| 久久久久久久久爱| 国产午夜精品理论片| 亚州av日韩av| 亚洲成人精品av| 国产一级片中文字幕| 欧美va视频| 日韩欧美在线播放| 欧美日韩一区二区三区在线观看免| 无码人妻精品一区二区蜜桃色欲 | 欧美日韩中文字幕在线| 性欧美大战久久久久久久免费观看 | 91国内免费在线视频| 韩国av中国字幕| 欧美91在线|欧美| 色综合天天综合狠狠| 奇米777四色影视在线看| 日本激情在线观看| 国产ts人妖一区二区| 国产主播喷水一区二区| 亚洲大尺度在线观看| 亚洲女同在线| 欧美一区二区三区图| 国产网址在线观看| 黄色亚洲在线| 超碰日本道色综合久久综合| 任我爽在线视频| 亚洲一区二区电影| 91精品啪在线观看国产60岁| 国产午夜福利100集发布| yiren22综合网成人| 26uuu精品一区二区| 成人写真视频福利网| 国产精品变态另类虐交| 国产主播精品| 8090成年在线看片午夜| 国产做受高潮漫动| 香蕉久久夜色精品国产| 久久躁狠狠躁夜夜爽| 中文字幕在线看高清电影| 国产激情精品一区二区三区| 欧美浪妇xxxx高跟鞋交| 黄在线观看网站| 欧美自拍电影| 在线观看91视频| 韩国中文字幕av| 久久亚洲精品人成综合网| 欧美另类久久久品| 先锋资源在线视频| 韩国精品视频在线观看 | 日韩激情av在线免费观看| 成人无码www在线看免费| 亚洲精品国产动漫| 欧美r级在线观看| 亚洲精品国产一区二区三区| 人人九九精品视频| 亚洲精品99久久久久| 国产精品成人一区二区三区电影毛片 | 91精品在线播放| 国产三区在线播放| 99精品国产一区二区三区不卡| 亚洲bt欧美bt日本bt| 成人av无码一区二区三区| 成人网在线免费视频| 免费av在线一区二区| 在线看免费av| 亚洲一区精品在线| 国产视频一区二区视频| 九七电影院97理论片久久tvb| 亚洲一区二区三区爽爽爽爽爽| 国产精品jizz在线观看老狼| 日本无删减在线| 日韩欧美福利视频| 不卡中文字幕在线观看| 久久久免费人体| 欧美videos大乳护士334| 91 视频免费观看| 国内精品偷拍| www.久久久久久.com| 国产午夜视频在线播放| 亚洲精品精选| 成人精品久久久| 深夜福利在线看| 亚洲精品第1页| caoporn超碰97| 日韩在线观看一区二区三区| 亚洲欧美日韩第一区| 青青草手机视频在线观看| 久久精品成人| 国产伦精品一区二区三区视频黑人| 亚洲国产精品久久人人爱潘金莲 | 国产日韩精品综合网站| 免费观看黄色av| 亚洲日本电影在线| 青草全福视在线| 亚洲a∨精品一区二区三区导航| 91国产精品成人| 欧美激情 亚洲| 欧美hd在线| 国产福利成人在线| 亚洲无码精品国产| 国产呦萝稀缺另类资源| 视频一区免费观看| 天堂√8在线中文| 欧美不卡123| 制服丨自拍丨欧美丨动漫丨| 免费亚洲网站| 精品一区国产| 97人人爽人人澡人人精品| 正在播放一区二区| 乱老熟女一区二区三区| 日韩精品91亚洲二区在线观看 | 色777狠狠综合秋免鲁丝| 久久久国产精品成人免费| 国产成人免费视频网站高清观看视频| 国产精品久久久久久免费观看| 日韩在线无毛| 亚洲午夜精品网| 潘金莲一级淫片aaaaaaa| 久久综合av| 国产精品香蕉在线观看| 国内精品在线视频| 在线亚洲精品福利网址导航| 国产特级黄色录像| 老司机午夜精品视频在线观看| 成人深夜直播免费观看| 麻豆av免费在线观看| 欧美三级一区二区| www成人啪啪18软件| 日韩精品乱码免费| 亚洲二区三区四区| 亚洲精品成a人ⅴ香蕉片| 日韩最新av在线| 国产又粗又猛视频免费| 亚洲欧洲国产专区| 亚洲在线观看网站| 国产精品www.| 含羞草久久爱69一区| 乡村艳史在线观看| 日韩欧美的一区| 免费一级特黄特色大片| 99久久夜色精品国产网站| 免费欧美一级视频| 狠狠操综合网| 97在线观看视频国产| 国产免费一区二区三区免费视频| 久久久精品蜜桃| 成人三级视频在线播放| 欧美oldwomenvideos| av在线不卡一区| 麻豆国产在线| 中文字幕欧美日韩| 精品久久久免费视频| 亚洲成人av电影| 久久丫精品忘忧草西安产品| 麻豆91小视频| 欧美午夜性视频| 成人精品中文字幕| 97se在线视频| 国产免费不卡| 久久亚洲影音av资源网| 亚洲图片视频小说| 亚洲va在线va天堂| 懂色av蜜桃av| 美女mm1313爽爽久久久蜜臀| 欧美三级网色| 欧美一级大黄| 久久精品一偷一偷国产| 天堂在线观看视频| 在线综合+亚洲+欧美中文字幕| 五月婷婷六月香| 不卡的av中国片| 成年人三级黄色片| 国产欧美不卡| 性做爰过程免费播放| 亚洲另类春色校园小说| 亚洲aaa激情| 成人国产精品| 韩剧1988在线观看免费完整版| 亚洲精品成人电影| 亚洲国产综合人成综合网站| 久久久久亚洲av无码a片| 国产99久久久久| 毛片在线播放视频| 亚洲一区二区| 日韩免费三级| 欧美美女啪啪| 国产成人一区二区三区免费看| 韩国日本一区| 久久精品久久久久久| 免费在线国产| 日韩成人在线播放| 黄色一级视频免费看| 亚洲高清三级视频| 极品久久久久久| 亚洲国产电影在线观看| 亚洲色图14p| 丁香婷婷综合五月| 污视频在线观看免费网站| 视频一区二区三区中文字幕| 黄色成人在线看| 精品一区二区三区中文字幕老牛| 国产狼人综合免费视频| 高潮在线视频| 久久全国免费视频| 你懂的视频在线观看| 亚洲第一中文字幕| 超碰在线免费97| 日韩欧美在线网址| 日本熟女一区二区| 亚洲一区二区av电影| 超碰在线国产97| 日韩美女视频19| 91大神福利视频| 国产精品成人免费在线| 99精品欧美一区二区| 国产日韩成人精品| 亚洲午夜精品久久久久久高潮| 国产91色综合久久免费分享| 精品视频无码一区二区三区| 在线看片欧美| 毛片在线播放视频| 宅男噜噜噜66一区二区| 黄色一级片播放| 国产亚洲在线| 乱子伦视频在线看| 欧美精品福利| 国产精品久久久久久久久电影网| 国产亚洲一卡2卡3卡4卡新区| 97伦理在线四区| 97精品国产99久久久久久免费| 欧美大片大片在线播放| 成年人视频在线看| 日日骚久久av| 黄色网址在线播放| 亚洲成人aaa| 手机av免费在线观看| 日韩精品在线免费| 成人影院免费观看| 久久视频免费在线播放| 欧美日韩经典丝袜| 91成人福利在线| 日韩一区二区三区在线免费观看| 高清一区二区三区四区五区| 新版的欧美在线视频| 欧美激情视频在线| 182在线视频观看| 色综合老司机第九色激情 | 高清不卡在线观看av| 日本国产一级片| 成人性视频网站| 男男受被啪到高潮自述| www.视频一区| 妺妺窝人体色WWW精品| 久久综合九色综合欧美就去吻| 95视频在线观看| 久久美女高清视频| 尤物在线免费视频| 五月天亚洲精品| 中文字幕一区二区三区四区视频| 在线日韩国产精品| 国产婷婷一区二区三区久久| 亚洲国产一区二区三区在线观看 | 台湾天天综合人成在线| 999视频在线观看| 国产美女精品视频免费播放软件| 国产精品久久久久久久久借妻 | 综合天堂久久久久久久| 国产男女免费视频| 久久er精品视频| 久久综合在线观看| 狠狠色狠狠色综合| 精品夜夜澡人妻无码av | 色老头久久综合| av网站免费播放| 亚洲日韩欧美视频| 日本大片在线播放| 国产精品免费福利| 2020国产精品小视频| 久久大香伊蕉在人线观看热2| 妖精一区二区三区精品视频| av动漫免费观看| 日韩精品亚洲一区| 精品无码在线视频| 亚洲无人区一区| 东京热一区二区三区四区| 欧美一级二级三级乱码| 国产1区2区3区在线| 亚州av一区二区| 玖玖精品一区| 精品亚洲欧美日韩| 亚洲性图久久| 国产91在线免费观看| 国产精品久久久久永久免费观看| 99久久婷婷国产综合| 亚洲国产一区二区在线播放| 天天爽夜夜爽夜夜爽精品| 欧美小视频在线| 欧美一级做a爰片免费视频| 欧美久久久一区| 国产福利第一视频在线播放| 日韩在线观看免费| 123成人网| 久热国产精品视频一区二区三区| 成人短片线上看| 欧美激情国产精品日韩| 99久久婷婷国产综合精品| 久久免费精彩视频| 日韩欧美色综合网站| www.久久ai| 亚洲综合社区网| 亚洲九九在线| 中文字幕色网站| 亚洲欧美怡红院| 国产一区二区麻豆| 俺去啦;欧美日韩| 高清不卡一区| 一区二区三区日韩视频| 黄一区二区三区| 日韩精品123区| 91精品国产高清一区二区三区蜜臀| 欧美视频综合| 欧美激情二区三区| 2021年精品国产福利在线| 成人黄色片免费| 丰满亚洲少妇av| 日本一级黄色大片| 亚洲精品美女久久| jizz内谢中国亚洲jizz| 欧美不卡三区| 日韩福利视频导航| 成人黄色短视频| 欧美大片在线观看一区| 91桃色在线| 乱一区二区三区在线播放| 玖玖玖国产精品| 一本一本久久a久久| 欧美一区中文字幕| heyzo在线播放| 免费亚洲一区二区| 蜜芽一区二区三区| av成人免费网站| 日韩电影免费在线观看中文字幕 | 中文字幕在线观看一区| 国产精品国产一区二区三区四区| 亚洲欧美福利视频| 超薄肉色丝袜脚交一区二区| 在线日韩av永久免费观看| 国产伦精品一区二区三区免费迷| 女人黄色一级片| 欧美肥胖老妇做爰| sqte在线播放| 欧美主播一区二区三区美女 久久精品人| 中文无码久久精品| 亚洲av永久无码精品| 色偷偷88欧美精品久久久| 黄网站免费在线播放| 国产欧美日本在线| 免费人成黄页网站在线一区二区| 国产肥白大熟妇bbbb视频| 欧美顶级少妇做爰| 国产免费拔擦拔擦8x高清在线人| 国产经品一区二区| 日韩电影在线观看网站| 欧美成人aaa片一区国产精品| 91精品福利在线一区二区三区| 免费的黄网站在线观看| 国产一区二区三区免费不卡| 亚洲精品韩国| 久久噜噜色综合一区二区| 亚洲成人在线视频播放| 成人国产精选| 亚洲国产精品成人天堂| 国产精品日日摸夜夜摸av| 国产91久久久| 国产在线视频2019最新视频| 亚洲作爱视频| 免费无码毛片一区二区app| 欧美mv日韩mv|