国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - MongoDB - express+mongoose實現對mongodb增刪改查操作詳解

express+mongoose實現對mongodb增刪改查操作詳解

2020-08-28 15:43jrainlau MongoDB

這篇文章主要介紹了express+mongoose實現對mongodb增刪改查操作,結合實例形式分析了express+mongoose對mongodb增刪改查操作基本實現方法與操作注意事項,需要的朋友可以參考下

本文實例講述了express+mongoose實現對mongodb增刪改查操作。分享給大家供大家參考,具體如下:

項目地址:https://github.com/jrainlau/mongoose_crud


寫在開頭

 

本文主要分享我如何使用express+mongoose對mongodb實現增刪改查操作,感謝cnode社區所有精品文章的幫助,以及@airuikun的開源項目airuikun/mongoose_crud對我的啟發。
學習nodejs已經小半個月了,一直琢磨著做一些什么東西出來。由于有著一定的PHP經驗,所以對數據庫的操作比較感興趣。乘著學習nodejs的勢頭,就打算把mongodb也一并學了。mongodb給我的感覺會比MySQL靈活一點,也比較好上手。掌握了一定的mongodb知識以后,便開始著手開發,實現最基礎的增刪改查功能。


項目準備

 

首先你需要掌握一定的nodejs,express以及mongodb的知識,并且已經安裝好express和mongoose模塊,同時電腦安裝有mongodb。關于mongodb的問題,可以移步我的另一篇文章:win7下快速啟動mongodb的方法,里面有詳細的安裝及配置過程。同時推薦使用robomongo作為mongodb的可視化操作工具,方便我們直接查看和操作數據庫。

項目開始

 

打開命令行,輸入
express -e mongoose_crud
“-e”表示使用ejs作為模版引擎(jade太丑不喜歡)。生成項目文件結構以后,執行
cd mongoose_crud && npm install安裝依賴包。
現在我們的項目應該長這樣的(modules文件夾是我自己建的,后面會講到):

express+mongoose實現對mongodb增刪改查操作詳解

為了方便接下來的操作,推薦使用supervisor來啟動項目
npm install supervisor -g
進入我們的項目文件夾,我們改寫一下package.json文件,把里面的"scripts"改為下面的寫法

?
1
2
3
"scripts": {
 "start": "supervisor ./bin/www"
 },

以后要啟動項目只需要在項目文件夾下,執行npm start即可。

改寫文件

 

由于express自己生成的文件結構不那么優美,所以稍微修改一下,方便接下來的工作。
首先打開\route文件夾,刪除沒用的user.js,打開index.js,修改為下面的內容:

?
1
2
3
4
5
6
'use strict'
const routes = (app) => {
 app.get('/', (req, res, next) => {
  res.render('index', { title: 'Jrain真的很帥'})
 })
}

然后打開app.js文件夾,修改為以下內容:

?
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
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
 
var routes = require('./routes/index');
 
var app = express();
 
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
 
// uncomment after placing your favicon in /public
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
 
routes(app)
 
// catch 404 and forward to error handler
app.use(function(req, res, next) {
 var err = new Error('Not Found');
 err.status = 404;
 next(err);
});
 
// error handlers
 
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
 app.use(function(err, req, res, next) {
 res.status(err.status || 500);
 res.render('error', {
  message: err.message,
  error: err
 });
 });
}
 
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
 res.status(err.status || 500);
 res.render('error', {
 message: err.message,
 error: {}
 });
});
 
module.exports = app;

其實就是把路由管理從app.js遷移到了\routes\index.js,方便我們管理。

我們可以測試一下,在瀏覽器輸入localhost:3000,如果輸出不是“Jrain真的很帥”,那就是你的項目出了問題。OK,接下來就到真正的開發啦!

增刪改查功能實現

 

在根目錄下,新建一個modules文件夾,里面新建一個叫做my_class.js的文件。我們這個項目是建立一個班級學生管理系統,能夠對學生的姓名及學號進行增刪改查的操作。文件內容如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'use strict'
const mongoose = require('mongoose')
// 連接mongodb
mongoose.connect('mongodb://localhost/test')
// 實例化連接對象
const db = mongoose.connection
db.on('error', console.error.bind(console, '連接錯誤:'))
db.once('open', (callback) => {
 console.log('MongoDB連接成功!!')
})
// 創建schema
const classSchema = new mongoose.Schema({
 name: String,
 studentId: Number
})
// 創建model
const classModel = mongoose.model('newClass', classSchema) // newClass為創建或選中的集合
 
module.exports = classModel

每一段的作用看注釋即可。現在我們已經把項目跟mongodb連接好了,可以進行接下來的步驟。

我們會有5個頁面,分別是首頁,學生信息增加頁面,學生刪除頁面,學生修改頁面,學生查找頁面。在\views文件夾內建立相應的ejs文件即可,代碼就不貼了,可以直接到項目去看:
https://github.com/jrainlau/mongoose_crud/tree/master/views

然后我們回到\routes\index.js,我們幾乎所有的邏輯都會在這里面進行。

把當中內容修改為下面的代碼:

?
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
'use strict'
const classModel = require('../modules/my_class')
const routes = (app) => {
 // 首頁
 app.get('/', (req, res, next) => {
  let response = res
  classModel.find({}, (err, result, res) => {
   if(err) return console.log(err)
   response.render('index', { result })
  })
 })
 // 增加學生信息
 app.get('/create', (req, res, next) => {
  res.render('create', {})
 })
 app.post('/create', (req, res, next) => {
  let newStudent = [{
   name: req.body.name,
   studentId: req.body.student_id
  }]
  classModel.create(newStudent, (err) => {
   if(err) return console.log(err)
   res.send("<a href='/'>添加成功,點擊返回首頁</a>")
  })
 })
 // 刪除學生信息
 app.get('/del', (req, res, next) => {
  let response = res
  classModel.find({}, (err, result, res) => {
   if(err) return console.log(err)
   response.render('del', { result })
  })
 })
 app.post('/del', (req, res, next) => {
  classModel.remove({_id: req.body.student}, (err, result) => {
   if(err) return console.log(err)
   console.log(result.result)
   res.send("<a href='/'>刪除成功,點擊返回首頁</a>")
  })
 })
 // 修改學生信息
 app.get('/update', (req, res, next) => {
  let response = res
  classModel.find({}, (err, result, res) => {
   if(err) return console.log(err)
   response.render('update', { result })
  })
 })
 app.post('/update', (req, res, next) => {
  console.log(req.body)
  let num = req.body.num,
   condiction = {_id: req.body._id[num]},
   query = {$set: {name: req.body.name[num], studentId: req.body.student_id[num]}}
  classModel.update(condiction, query, (err, result) => {
   if(err) {
    console.log(err)
    res.send('<script>alert("請勾選待修改的學生")</script>')
   }
   res.send("<a href='/'>修改成功,點擊返回首頁</a>")
  })
 })
 // 查找學生
 app.get('/reach', (req, res, next) => {
  let result = null
  res.render('reach', { result })
 })
 app.post('/reach', (req, res, next) => {
  console.log(req.body)
  let response = res
  let reachType = req.body.reach_type,
   keyWord = req.body.keyword
  if (reachType == 0) {
   classModel.find({name: keyWord}, (err, result) => {
    if(err) return console.log(err)
    response.render('reach', { result })
   })
  } else {
   classModel.find({studentId: keyWord}, (err, result) => {
    if(err) return console.log(err)
    response.render('reach', { result })
   })
  }
 })
}
module.exports = routes

其原理是,程序通過post請求接收參數,進行相應的操作,實現增刪改查的功能。主要用到的API有如下幾個:

  • .find(),作為讀取、查找學生信息用。
  • .create(),作為增加學生信息用。它是基于mongoose中的model的操作,傳入一個json對象作為需要添加的內容,具體可自行查閱。
  • .update(),作為更新學生信息用。
  • .remove(),作為刪除學生信息用。

我們的項目已經全部完成了,測試一下吧!

尾聲

 

這篇東西不是教程,僅作為自己學習的一個記錄。如果能夠對他人有用就最好啦,如果覺得我哪里說得不對也歡迎指正。謝謝大家~!

希望本文所述對大家MongoDB數據庫程序設計有所幫助。

原文鏈接:https://segmentfault.com/a/1190000004873740

延伸 · 閱讀

精彩推薦
  • MongoDB分布式文檔存儲數據庫之MongoDB分片集群的問題

    分布式文檔存儲數據庫之MongoDB分片集群的問題

    這篇文章主要介紹了分布式文檔存儲數據庫之MongoDB分片集群的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋...

    Linux-18743072020-12-20
  • MongoDB遷移sqlserver數據到MongoDb的方法

    遷移sqlserver數據到MongoDb的方法

    這篇文章主要介紹了遷移sqlserver數據到MongoDb的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下...

    聽楓xl9682021-01-03
  • MongoDBMongoDB中javascript腳本編程簡介和入門實例

    MongoDB中javascript腳本編程簡介和入門實例

    作為一個數據庫,MongoDB有一個很大的優勢——它使用js管理數據庫,所以也能夠使用js腳本進行復雜的管理——這種方法非常靈活 ...

    MongoDB教程網6982020-04-24
  • MongoDBMongodb實現定時備份與恢復的方法教程

    Mongodb實現定時備份與恢復的方法教程

    這篇文章主要給大家介紹了Mongodb實現定時備份與恢復的方法教程,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面...

    chenjsh364522020-05-13
  • MongoDBMongoDB憑什么躋身數據庫排行前五

    MongoDB憑什么躋身數據庫排行前五

    MongoDB以比去年同期超出65.96分的成績繼續雄踞榜單前五,這個增幅在全榜僅次于PostgreSQL的77.99,而其相對于4月份的6.10分的增長也是僅次于微軟SQL Server排名...

    孫浩峰3892020-05-22
  • MongoDBMongoDB安裝圖文教程

    MongoDB安裝圖文教程

    這篇文章主要為大家詳細介紹了MongoDB安裝圖文教程,分為兩大部分為大家介紹下載MongoDB和安裝MongoDB的方法,感興趣的小伙伴們可以參考一下 ...

    Yangyi.He6132020-05-07
  • MongoDBmongodb基本命令實例小結

    mongodb基本命令實例小結

    這篇文章主要介紹了mongodb基本命令,結合實例形式總結分析了MongoDB數據庫切換、查看、刪除、查詢等基本命令用法與操作注意事項,需要的朋友可以參考下...

    dawn-liu3652020-05-26
  • MongoDBMongoDB 內存使用情況分析

    MongoDB 內存使用情況分析

    都說 MongoDB 是個內存大戶,但是怎么知道它到底用了多少內存呢...

    MongoDB教程網10002020-09-29
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品一区二区三区四区五区 | 欧美中文字幕在线 | 久久一二三四 | 96久久久| 日本不卡免费一区二区三区综合久久 | 野花国产精品入口 | 欧美精品一二三 | 九九综合 | 午夜在线小视频 | 成人午夜精品一区二区三区 | 国产黄色小视频 | 国产精品久久久久久亚洲影视 | 日韩欧美视频免费 | 粉嫩视频在线观看 | 精品少妇一区二区三区日产乱码 | 欧美亚洲国产一区二区三区 | 黄色大片在线播放 | 欧美日韩成人在线播放 | 日韩一区电影 | 国产成人精品久久二区二区 | 欧美综合影院 | 欧美顶级毛片在线播放 | 91视频免费| 伊人伊成久久人综合网站 | 91av免费在线观看 | 欧美一区二区三区 | 内地农村三片在线观看 | 在线欧美一区 | 欧美日韩视频在线第一区 | 国产高潮国产高潮久久久91 | 久久久免费国产 | 国产成人精品在线 | 中文字幕av一区二区三区免费看 | 欧美成人激情 | 九九av | 夜操 | 久久噜| 91视频精品| 精品国产不卡一区二区三区 | 国产片在线观看 | 亚洲免费国产视频 |