婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > express+mongoose實現對mongodb增刪改查操作詳解

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

熱門標簽:呼和浩特外呼系統原理是什么 小裙科技電銷機器人怎樣 內蒙古營銷智能外呼系統哪個好 青白江400企業電話申請 外呼線路資源屬于電信業務嗎 河南電話外呼系統招商 長沙電銷外呼防封卡是什么 crm外呼系統聯系方式 智能外呼系統官網

本文實例講述了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文件夾是我自己建的,后面會講到):


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

"scripts": {
 "start": "supervisor ./bin/www"
 },

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

改寫文件

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

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

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

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的文件。我們這個項目是建立一個班級學生管理系統,能夠對學生的姓名及學號進行增刪改查的操作。文件內容如下:

'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,我們幾乎所有的邏輯都會在這里面進行。

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

'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數據庫程序設計有所幫助。

您可能感興趣的文章:
  • MongoDB實現基于關鍵詞的文章檢索功能(C#版)
  • 深入了解MongoDB 分布式集群
  • 開源 5 款超好用的數據庫 GUI 帶你玩轉 MongoDB、Redis、SQL 數據庫(推薦)
  • JAVA代碼實現MongoDB動態條件之分頁查詢
  • MongoDB設計方法以及技巧示例詳解
  • MongoDB數據庫基礎操作總結
  • win7平臺快速安裝、啟動mongodb的方法
  • 使用Mongodb實現打卡簽到系統的實例代碼
  • 淺析MongoDB 全文檢索

標簽:黃石 菏澤 安順 池州 楚雄 白山 呼倫貝爾 舟山

巨人網絡通訊聲明:本文標題《express+mongoose實現對mongodb增刪改查操作詳解》,本文關鍵詞  express+mongoose,實現,對,mongodb,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《express+mongoose實現對mongodb增刪改查操作詳解》相關的同類信息!
  • 本頁收集關于express+mongoose實現對mongodb增刪改查操作詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    99精品久久99久久久久| 老汉av免费一区二区三区| 国产亚洲婷婷免费| 欧美不卡在线视频| 欧美videofree性高清杂交| 欧美mv和日韩mv的网站| 精品三级在线看| 26uuu另类欧美| 国产清纯美女被跳蛋高潮一区二区久久w| 日韩一区二区三区免费观看| 日韩免费成人网| 精品成人免费观看| 国产精品麻豆欧美日韩ww| 亚洲人精品午夜| 亚洲国产一区在线观看| 日产国产欧美视频一区精品| 久久er99热精品一区二区| 丁香婷婷综合色啪| 在线看日本不卡| 精品国产伦一区二区三区观看方式| 久久综合色综合88| 亚洲人成小说网站色在线 | 亚洲一区二区精品视频| 日日欢夜夜爽一区| 国产成人午夜精品影院观看视频| a在线欧美一区| 欧美一区二区私人影院日本| 国产欧美一区二区精品仙草咪| 亚洲理论在线观看| 久久精品99国产精品| 波多野结衣在线一区| 欧美日韩一区二区在线视频| 久久九九全国免费| 亚洲gay无套男同| 国产乱子伦一区二区三区国色天香| 99久久99久久精品国产片果冻| 3d成人h动漫网站入口| 国产精品免费视频一区| 日本美女视频一区二区| 99国产精品久久久| 久久这里只有精品6| 亚洲6080在线| 91亚洲午夜精品久久久久久| 精品福利二区三区| 五月天激情综合网| 91丝袜国产在线播放| 精品国产三级电影在线观看| 亚洲午夜电影网| 91美女在线看| 中文字幕不卡在线| 国产在线不卡一区| 欧美美女一区二区在线观看| 亚洲欧美日韩久久| 成人免费av资源| 国产日韩欧美在线一区| 美女国产一区二区| 91精品久久久久久久久99蜜臂 | 欧美视频在线观看一区二区| 中文字幕日韩一区| 成人污污视频在线观看| 精品第一国产综合精品aⅴ| 天堂久久一区二区三区| 欧美日韩国产bt| 亚洲综合丁香婷婷六月香| 99re亚洲国产精品| 国产精品久久久久久久久久久免费看| 精品一区二区三区在线观看国产| 欧美精品日韩精品| 日韩1区2区日韩1区2区| 51精品视频一区二区三区| 亚洲成人av在线电影| 欧美日韩色一区| 天堂成人免费av电影一区| 欧美日韩成人综合在线一区二区 | 狠狠色丁香婷婷综合| 91精品久久久久久蜜臀| 奇米影视7777精品一区二区| 91精品国产美女浴室洗澡无遮挡| 天天操天天色综合| 日韩一区二区三区在线观看| 国产自产v一区二区三区c| 久久久91精品国产一区二区三区| 成人午夜视频在线| 亚洲日本电影在线| 欧美久久婷婷综合色| 久久99精品久久只有精品| 久久久久久免费网| 色哟哟国产精品| 婷婷夜色潮精品综合在线| 日韩女优电影在线观看| 国产福利精品一区| 一区二区三区在线影院| 欧美一区二区视频在线观看| 国产99久久久久| 亚洲一区在线免费观看| 91精品国产品国语在线不卡| 黄网站免费久久| 国产精品久久久久影视| 欧美日本韩国一区二区三区视频| 日av在线不卡| 国产精品国产自产拍高清av| 欧美日韩不卡在线| 国产成人8x视频一区二区| 国产精品对白交换视频 | 亚洲色图欧洲色图| 欧美一区二区视频在线观看| 成+人+亚洲+综合天堂| 日日夜夜精品免费视频| 国产日韩高清在线| 777亚洲妇女| 91色porny蝌蚪| 久久99精品国产| 亚洲图片有声小说| 国产精品久久久久久久久果冻传媒 | 水蜜桃久久夜色精品一区的特点| 久久婷婷久久一区二区三区| 精品视频在线免费看| 高清久久久久久| 久久精品国产精品青草| 一区二区在线观看不卡| 日本一区二区免费在线| 欧美一区二区人人喊爽| 色丁香久综合在线久综合在线观看| 国产综合色在线| 美女www一区二区| 亚洲电影一区二区| 亚洲欧美国产三级| 欧美国产欧美亚州国产日韩mv天天看完整 | 成人综合婷婷国产精品久久蜜臀| 五月天激情小说综合| 亚洲欧美欧美一区二区三区| 亚洲国产成人私人影院tom| 欧美va在线播放| 69堂国产成人免费视频| 欧美人与z0zoxxxx视频| 色女孩综合影院| 91免费观看视频在线| 成人免费三级在线| 国产精品2024| 国产精品综合久久| 国产盗摄女厕一区二区三区| 蜜乳av一区二区| 精品一区二区国语对白| 男女男精品网站| 老司机午夜精品| 精品一区二区综合| 国产一区欧美一区| 寂寞少妇一区二区三区| 国产一二精品视频| 国产精品1区2区3区在线观看| 国产精品1区2区3区在线观看| 国产精品自拍av| 成人午夜又粗又硬又大| av色综合久久天堂av综合| 9色porny自拍视频一区二区| 91麻豆6部合集magnet| 日本高清不卡一区| 欧美三级电影在线观看| 欧美一区二区三区播放老司机| 日韩一区二区三区观看| 国产亚洲欧美日韩在线一区| 国产精品乱子久久久久| 亚洲综合久久久久| 男女男精品网站| 国产成人av自拍| 在线视频你懂得一区| 欧美精品自拍偷拍动漫精品| 欧美刺激午夜性久久久久久久| 国产日韩欧美精品一区| 亚洲精品视频观看| 久久国产乱子精品免费女| 懂色av中文字幕一区二区三区| 色94色欧美sute亚洲13| 欧美精品在线观看一区二区| 精品国产99国产精品| 中文字幕一区二区三区四区| 日韩精品视频网| 成人综合婷婷国产精品久久| 欧洲国内综合视频| 久久精品这里都是精品| 1000精品久久久久久久久| 奇米一区二区三区av| k8久久久一区二区三区| 91精品国产综合久久婷婷香蕉| 国产欧美日韩在线看| 亚洲成av人影院| av成人免费在线观看| 91精品国产综合久久精品| 国产精品福利影院| 精品一区二区国语对白| 一本色道久久加勒比精品 | 亚洲免费观看高清| 裸体健美xxxx欧美裸体表演| 成人av电影在线| 久久综合色婷婷| 香蕉乱码成人久久天堂爱免费| 波多野结衣中文一区| 久久一区二区三区国产精品| 亚洲国产成人av网| 色综合中文字幕国产|