精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

亚洲国产综合在线观看| 狠狠做六月爱婷婷综合aⅴ| 下面一进一出好爽视频| 亚洲国产精品人人爽夜夜爽| 国产一区网站| 黑人一级大毛片| 亚洲尤物视频网| 中文字幕成人网| 午夜精品久久久久久久久久蜜桃| 四虎国产精品免费| 亚洲欧美在线磁力| 国产精品高清一区二区| 99久久久无码国产精品衣服| 午夜精品99久久免费| 国产成人精品三级| 国产在线高潮| 毛片毛片毛片毛| 中文字幕亚洲一区二区三区五十路 | 精品免费国产| 日韩欧美中文字幕在线观看| 国产精品宾馆| 国产污污视频在线观看| 国产精品一区二区三区观看| 香蕉久久一区二区不卡无毒影院| 亚洲日本视频在线| 久久艹精品视频| 精品在线一区| 日本高清成人免费播放| 国产一区二区精品久| 真实的国产乱xxxx在线91| 欧美日韩视频在线一区二区观看视频| 亚洲成av人片在线观看无码| 美女视频亚洲色图| 亚洲成熟少妇视频在线观看| 日本高清一区| 日韩欧美亚洲国产精品字幕久久久| 久久蜜桃av| 五月婷婷六月色| 污污视频网站免费观看| 久久综合九色九九| 91在线精品一区二区三区| 日韩在线观看不卡| 在线免费看v片| 亚洲精品视频网上网址在线观看| 久久国产日本精品| 呦呦在线视频| 少妇视频在线播放| 精品伦理一区二区三区| 欧美日韩视频在线一区二区| 精品成人久久| 国产一二区在线| 一级特黄曰皮片视频| 国产一区二区不卡视频在线观看| 欧美老女人在线| 成人羞羞在线观看网站| 亚洲乱色熟女一区二区三区| 五月婷婷之综合激情| 国外成人在线播放| 一区二区国产视频| 一区二区日韩欧美| 拍真实国产伦偷精品| 国产熟女一区二区| 欧美精品免费观看二区| 亚洲第一页在线| 国产91对白在线观看九色| 国产精品亚洲综合在线观看 | 精品一区毛片| 西西人体44www大胆无码| 北京富婆泄欲对白| 国产中文一区二区| 亚洲国语精品自产拍在线观看| 国产麻豆午夜三级精品| 在线免费观看亚洲| 亚洲黄色a级片| 无码人妻aⅴ一区二区三区69岛| 国产精品免费视频久久久| 亚洲国产精品激情在线观看| 日韩一级特黄| 网站免费在线观看| 欧美一区二区三区啪啪| 日韩主播视频在线| 日本精品另类| 亚洲性生活大片| 男人的天堂免费| 亚洲精品网址在线观看| 91免费视频网址| gogogo高清在线观看一区二区| 麻豆疯狂做受xxxx高潮视频| 蜜桃久久影院| 久久九九精品99国产精品| 亚洲一区二区三区三| 视频一区视频二区在线观看| 亚洲一区二区av| 日韩av视屏| 精品丰满少妇一区二区三区| 大荫蒂性生交片| 国产精品美女久久久久av超清| 91精品欧美福利在线观看| 五月激情久久久| 9999在线视频| 国产精品伦一区二区三区| 免费的av网站| 日本男女交配视频| 国产精品爽黄69天堂a| 欧美精品一区二区三区在线| 国产在线播精品第三| 偷拍自拍亚洲色图| 1024在线播放| 国产又粗又猛又爽| 手机毛片在线观看| 亚洲三级视频网站| 热re99久久精品国产99热| 九九热精品在线| 日韩亚洲国产中文字幕欧美| 狠狠狠色丁香婷婷综合久久五月| 首页亚洲中字| 丝袜诱惑一区二区| 久久人人爽人人爽人人片av免费| 老司机免费视频| 久久亚洲精品无码va白人极品| 欧美成人精品影院| 欧美一区二区在线播放| 亚洲日本va在线观看| 天天射成人网| 蜜桃精品视频| 丁香花在线影院| 嫩草影院一区二区| 亚洲av中文无码乱人伦在线视色| 伊人网综合视频| 能在线观看的av| 亚洲二区自拍| av日韩免费电影| 日本精品一区二区三区在线| 亚洲人成网站色ww在线| 欧美伊人久久大香线蕉综合69| 国产精品国产自产拍高清av| 国产精品亚洲午夜一区二区三区 | 久久青青色综合| 日韩国产福利| 99草在线视频| 欧美 日韩 精品| 性生交大片免费全黄| 国产精品无码专区| 制服下的诱惑暮生| 可以在线看的黄色网址| 日韩欧美一级在线| 视频一区不卡| 日产精品久久久一区二区福利| 视频在线一区二区| 亚洲第一页在线| 欧美一级日韩免费不卡| 在线观看一区日韩| 精品免费在线观看| 一区av在线播放| 亚洲精品久久7777| 国产精品入口麻豆九色| 97久久超碰国产精品| 成人午夜激情影院| 国产成人免费视频网站| 久久99精品国产麻豆婷婷| 久久久久中文| 日韩精品久久理论片| 亚欧成人精品| 久久激情一区| 日韩高清不卡一区| 日韩国产欧美在线观看| 日韩电影在线观看网站| 日韩黄色免费网站| 日韩一区精品字幕| 免费美女久久99| 老司机免费视频一区二区三区| 日本成人中文字幕| 久久精品国产99| 国产sm精品调教视频网站| 国产成人精品免费视频网站| 国产91富婆露脸刺激对白| 丁香婷婷综合色啪| 久久久久久亚洲综合影院红桃 | 亚洲美女网站| 在线亚洲观看| 麻豆精品一区二区三区| 国产精品亚洲第一 | 91精品国产91久久久久久吃药| 97视频在线观看视频免费视频| 国产成人精品综合久久久| 成人性生交xxxxx网站| 激情五月综合色婷婷一区二区| 久久久免费看| 中文字幕一区二区三区有限公司| 给我免费播放片在线观看| 欧美日韩第二页| 国产成人av免费观看| 中文字幕一区二区三区人妻| 波多野结衣喷潮| 国产农村妇女aaaaa视频| 国产一区二区在线播放视频| 国产精品久久久久久久一区二区| 青梅竹马是消防员在线| 免费av网站在线观看| 国产在线观看www| 欧美videos粗暴| 精品国产午夜| 久久成人免费| av亚洲精华国产精华精| 亚洲天堂久久久久久久| 色一情一乱一乱一91av| 亚洲国产日韩一区| 久久久久久av| 久久亚洲精品中文字幕冲田杏梨| 97色在线视频观看| 高清一区二区三区视频| 日韩欧美视频免费在线观看| 久久久久久久久久久久久久久国产| 国产精品亚洲无码| 国产高清中文字幕| 国产中文在线观看| 91caoporm在线视频| 欧美日韩大片| 日韩一区二区三区色| 午夜精品网站| 不卡的av网站| 色综合久久99| 色偷偷888欧美精品久久久| 国产精品香蕉国产| 中文字幕色呦呦| 91porn在线| 丁香六月婷婷综合| caoporn国产精品免费视频| 在线成人免费| 狠狠综合久久| 国产婷婷色一区二区三区四区| 欧美在线观看视频一区二区 | 国产一区二区主播在线| 999精品一区| 成人免费视频播放| 欧美亚洲国产怡红院影院| 久久久97精品| 久久久久成人精品免费播放动漫| 日本va中文字幕| 日本特黄一级片| 午夜激情视频在线| 黄色美女久久久| 国产一区二区三区四区在线观看| 午夜精品视频在线观看| 上原亚衣av一区二区三区| 国产精品99久久久久久久| 91香蕉视频导航| 国语对白永久免费| 啦啦啦中文在线观看日本| av伊人久久| 久久精品亚洲精品国产欧美kt∨ | 在线视频国产区| 性欧美hd调教| 亚洲欧洲成人在线| 综合久久av| 欧美变态挠脚心| 99这里只有精品| 精品国产乱码久久| 91视频网页| 伊人色在线视频| 国产乱码精品一区二区| 激情亚洲小说| 久久激情综合网| 4438x成人网最大色成网站| 国产日韩在线视频| 簧片在线免费看| 国产精品特级毛片一区二区三区| av在线不卡精品| 捆绑调教一区二区三区| 欧美喷水一区二区| 亚洲va欧美va在线观看| 中文在线字幕观看| 天堂av中文在线资源库| 午夜影院免费在线| 激情久久中文字幕| 精品久久久久久电影| 国产精品永久在线| 亚洲成人精品在线播放| 九九视频免费看| 女海盗2成人h版中文字幕| 秋霞电影一区二区| 精品国产sm最大网站| 日本高清一区| 久久精品人妻一区二区三区| 日韩成人影音| 不卡在线视频中文字幕| 中文字幕精品www乱入免费视频| 日韩视频 中文字幕| 国产一级片免费视频| 88久久精品| 国产精品久久三| 热99精品里视频精品| 无码国产精品一区二区高潮| 91在线品视觉盛宴免费| 日韩视频一区二区三区在线播放免费观看| 色综合久久天天| 久久精品第九区免费观看| 中国美女黄色一级片| www国产在线观看| 国产精品外国| 欧美精品一区二区精品网| 日韩片电影在线免费观看| 中文字幕永久免费| 电影av一区| 亚洲欧洲日本一区二区三区| 欧美精品 日韩| 欧美aaaaa喷水| 1级黄色大片儿| 欧美野外wwwxxx| 久久久成人网| 亚洲激情 国产| 成人性生活视频免费看| 国产成人三级在线播放| 日韩av二区| 亚洲欧美自拍偷拍色图| 国产精品精品一区二区三区午夜版| 中国免费黄色片| 国产偷倩在线播放| 国产成人在线视频免费播放| 久久久国产精品免费| 高清一区在线观看| 免费黄色在线| 九九精品视频在线看| 日韩中文字幕免费| 中文字幕免费在线不卡| www.av88| 亚洲精品电影| 91精品国产91综合久久蜜臀| 中国黄色录像片| 蜜桃视频久久一区免费观看入口| 欧美国产免费| 亚洲国产欧美久久| 波多野结衣家庭教师视频| 日本精品专区| 久久精品国产在热久久| 日韩中文字幕在线视频播放| 北条麻妃在线观看| 亚州av在线播放| 捆绑调教一区二区三区| 欧美人交a欧美精品| 波多野结衣影院| 激情小说亚洲| 欧美午夜女人视频在线| 综合久久国产| 五月天婷婷激情网| 国产精品一级片在线观看| 欧美在线不卡区| 国产精品夜夜夜爽阿娇| 国产精品香蕉| 在线91免费看| 国产精品97在线| 精品精品导航| 国产精品久久久久aaaa| 加勒比在线一区二区三区观看| 亚洲性生活大片| 日韩电影在线观看一区| 97视频在线观看免费| 久久久久性色av无码一区二区| 国产在视频线精品视频www666| 欧美精品一区二区在线播放| 真实乱偷全部视频| 国产一区二区av在线| 欧美日韩精品电影| 欧美乱大交xxxxx潮喷l头像| 日韩黄色影院| 国产精品护士白丝一区av| 欧美极品一区二区| 天堂在线免费av| 91亚洲精品一区二区乱码| 99久久一区三区四区免费| 国产精品久久久免费视频| 97视频精品| 精品国产一区二区三区久久狼黑人| 最近日本中文字幕| 首页亚洲中字| 亚洲视频在线免费看| 波多野吉衣中文字幕| 国产伦精品一区二区三区千人斩 | 日韩中文字幕观看| 成人黄色在线视频| 国产精品亚洲综合| 美州a亚洲一视本频v色道| 国产欧美精品一区二区色综合 | 中文字幕精品影院| 亚洲欧美综合另类中字| 欧美人妻一区二区三区| 日韩成人精品一区| 欧美成人久久久| 人人干人人干人人干| 蜜桃视频一区| 亚洲直播在线一区| 日本一二三区在线视频| 国产精品久久久99| 日韩视频免费播放| jizz亚洲女人高潮大叫| 日韩亚洲欧美高清| 四季av中文字幕| 在线看片不卡| 国产va免费精品高清在线| 一级久久久久久久|