1. 程式人生 > >node.js學習筆記(4)——mongoose連線並操作mongoDB

node.js學習筆記(4)——mongoose連線並操作mongoDB

一、mongoDB

mongoDB是非關係型資料庫,儲存的單位是文件,可以自定義各種複雜的結構。

mongoDB官網下載連結:(community server)

對於windows系統,可以直接下載msi安裝檔案一步步安裝。安裝後可以找到自帶的shell應用,然後就可以使用了。

mongoDB和mySQL等資料庫一樣,進入之後首先要連線資料庫,然後選擇集合——mongoDB的集合相當於mySQL中的表。之後可以進行操作。以下是進入資料庫、進入集合,然後檢視所有資料的操作。

二、mongoose模組

node.js通常搭配mongoDB使用,而mongoose提供了非常方便的介面操作mongoDB。

接下來我用一個express專案中使用者資料庫的例子來介紹mongoose模組的使用

(注:為了方便此處的密碼全部是明文儲存的,這是個非常不好的習慣)

1. 將mongoose模組寫入package.json檔案中,然後安裝依賴

2. 建立config目錄,建立config.js,寫入以下內容連線本地資料庫:

module.exports = {
    port: 3000,
    mongodb:'mongodb://localhost/blog'
};

埠號的選擇:不要和專案埠號一樣

3. 建立models目錄,用於存放表模型,建立userModel.js,這個檔案定義了資料庫的連線和集合的結構

var mongoose = require('mongoose');
var config = require('./../config/config');
mongoose.connect(config.mongodb);

var UserSchema = new mongoose.Schema({
    username:String,
    password:String,
    email:String
});

var User = mongoose.model('User', UserSchema);
module.exports = User;

(1)mongoose.connect() 實現了資料庫的連線,如果models目錄下有多個model檔案,只有一個檔案進行資料庫的連結即可。

(2)new mongoose.Schema建立了一個表,可以定義表的各種屬性。資料型別包括String, Number, Array等。mongoDB在建立每個文件的時候會預設建立 _id 屬性作為文件的唯一標識。

(3)最後使用module.exports = User匯出表介面,便於在別的檔案中使用

4. 建立routes目錄,用於存放路由。在index.js檔案中匯入userModel

var User = require('../models/userModel');

5. 註冊頁新增一個使用者

var user = new User({
    username: req.body.username,
    password: req.body.password,
    email: req.body.email
});
user.save(function(err){
    if(err){
        console.log(err);
    }
    console.log('註冊成功');
}

save方法中可以寫回調函式,也可以不寫,直接用 user.save() 存入資料庫中

6. 登入頁查詢使用者資訊

var username = req.body.username;
var password = req.body.password;

//檢查使用者是否存在
User.findOne({'username':username},function(err,user){
    if(err){
        console.log(err);
        return res.redirect('/');
    }
    //使用者不存在
    if(!user){
        console.log("使用者名稱或密碼錯誤");
        return res.redirect('/login');
    }
    //判斷密碼是否一致
    if(user.password != password){
        console.log("使用者名稱或密碼錯誤");
        return res.redirect('/login');
    }
    //使用者名稱密碼都匹配
    console.log("登入成功!");
    res.redirect('/');
});

使用mongoose進行查詢操作時,可以使用User.find()或User.findOne(),前者返回的是一個物件陣列,後者返回單個元素。對於單個元素可以使用 user==null 這樣的判斷語句判斷是否存在,但對陣列不行。

find()方法引數最多可以有四個,分別是查詢條件,篩選,排序或限制數量等可選項,以及回撥函式。下面是官方文件的一個例子:

MyModel.find({ name: /john/i }, null, { skip: 10 }, function (err, docs) {});

三、其他操作

1. 刪除資料

使用 findByIdAndRemove() 方法通過 _id 進行刪除。第一個引數時id,第二個引數是回撥函式,也可以不寫

Post.findByIdAndRemove(id,function(err){
    if(err){
        console.log(err);
        return;
    }
    console.log("刪除成功!");
})

2. 更改內容

使用update方法進行操作,第一個引數是查詢條件,第二個引數是需要被修改的內容

var post = {
    id: req.body.id,
    author: req.session.user,
    title: req.body.title,
    article: req.body.article
};
//修改部落格內容
var condition = {"_id":post.id};
var content = {$set: {title:post.title, article:post.article}};
Post.update(condition, content, function(err){
    if(err){
        console.log(err);
        return;
    }
    console.log("更新成功!");
    res.redirect('/article/detail?id=' + post.id);
});

3. 使用 $and 等進行查詢

(1)$and 的引數是一個數組,形如 $and: [ condition1, condition2, ... ],陣列的各項即各個條件。

(2)$in 的引數是一個數據,但不能是物件陣列,而是形如 $in:[1,2,3,4,...]

4. 其他內容可以檢視官方文件。

四、專案程式碼

相關推薦

node.js學習筆記(4)——mongoose連線操作mongoDB

一、mongoDB mongoDB是非關係型資料庫,儲存的單位是文件,可以自定義各種複雜的結構。 mongoDB官網下載連結:(community server) 對於windows系統,可以直接下載msi安裝檔案一步步安裝。安裝後可以找到自帶的shell應用,然後

Node.js學習筆記(六)Mongoose的使用

Mongoose的使用 文章目錄 Mongoose的使用 1. 什麼是Mongoose 2. Mongoose開始 3. Mongoose 操作 MongoDB 3.1 建立連線 3.2 定義文件規則 Schema

node.js學習筆記(10)--mysql模組連線mysql資料庫

1.安裝 我們需要一個mysql 和node環境,這裡我自己的電腦沒有安裝mysql,用navicat連的同事的。 注意如果碰到這個 “Host''xxx.xx.xxx.xxx''isnot allowedtoconnectto this MySQL server"

node.js學習筆記二之版本問題

nodejs targe tle 下一個 .cn blank 網站 mage 功能 一、版本說明 進入node.js官網https://nodejs.org/en/download/ 點擊上面的【All download options】進入到所有下載列表的地址 下載地

vue+node.js學習筆記

拷貝 vue 靜態頁 -1 註冊 分享 head ade view 一、搭建vue開發環境 vue init webpack newmall cnpm install npm run dev 二、測試靜態頁 把靜態頁的css拷貝進來 src

Node.js學習筆記(1):Node.js快速開始

path 文本文 下載 啟動程序 直接 查看 學習筆記 完成後 編輯器 Node.js學習筆記(1):Node.js快速開始 Node.js的安裝 下載 官方網址:https://nodejs.org/en/ 說明:   在Windows上安裝時務必選擇全部組件,包括勾選

Node.js學習筆記(2):基本模塊

依次 常用模塊 nbsp 兩個 避免 ESS 第三方 text 編程 Node.js學習筆記(2):基本模塊 模塊 引入模塊   為了編寫可維護的代碼,我們把很多函數分組,分別放到不同的文件裏,這樣,每個文件包含的代碼就相對較少,很多編程語言都采用這種組織代碼的方式。在No

Node.js 學習筆記(1)

  事件發射器會觸發事件,並且在那些事件觸發時能處理他們。事件發射器對於提高程式碼的複用性和簡潔程度至關重要。 1.Echo伺服器   Echo伺服器是一個使用事件發射器處理重複性事件的簡單例子,當你給它傳送資料時,它會把資料傳送回來。如圖1-1所示:   圖1-1 Echo伺服器響應例

node.js學習筆記(3)——使用cheerio處理爬取的網頁內容

一、簡介 node.js本身自帶爬取網站網頁內容的功能。 var http = require('http'); router.get('/test', function(req, res){ var url = 'http://www.baidu.com';

150.Node.js學習筆記(四)2018.12.11

知識點 Express 檔案操作路徑和模組路徑 檔案操作路徑: // 在檔案操作的相對路徑中 // ./data/a.txt 相對於當前目錄 // data/a.txt 相對於當前目錄 // /data/a.txt 絕

149.Node.js學習筆記(三)2018.12.03

1. 知識點 模組系統 核心模組 第三方模組 自己寫的模組 載入規則以及載入機制 迴圈載入 npm package.json Express 第三方web開發框架

148.Node.js學習筆記(二)2018.11.27

目錄 1. 程式碼規範 1.1程式碼規範問題 1.2 程式碼分號問題 1.3 模板字串 2. http-Apache 2.1 http-Apache功能 2.2 fs 讀取目錄 2.3 http-Apache目錄列表 3. 在node中使用模板引擎 3.1 &

147.Node.js學習筆記(一)2018.11.27

1. Node.js介紹    1.1 Node.js是什麼        Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.

node.js學習筆記——模組與包

1.模組 1.1 模組概述 在node中,一個檔案就是一個模組,每個模組都有自己的作用域。 Node中模組分為兩類:一類是Node提供的模組,稱為核心模組;另一類是使用者編寫的模組,稱為檔案模組。 核心模組在node原始碼的編譯過程中就編譯進了二進位制執行檔案

Node.js學習筆記(二)——靜態資原始檔

Node.js學習筆記(二)——靜態資原始檔 參考視訊 實現一個小阿帕奇,自動為資料夾裡面的檔案、圖片、css、js加上路由。 基本思想:使用者輸入什麼url,就用fs去讀取那個檔案。 var http = require('http'); var url

Node.js學習筆記(一)——完整的響應html頁面(包括css,js檔案)

Node.js學習筆記(一)——完整的響應html頁面(包括css,js檔案) 新手學習部落格,如存在問題,歡迎指出! 終於解決了這個問題!之前寫的程式碼,然後只能加載出html檔案,然後在網上找到了解決方案。 參考部落格 這裡標記一下最主要的幾個點: node.js

151.Node.js學習筆記(五)2018.12.16

快捷鍵 Ctr+Shift+左鍵、右鍵、上鍵、下鍵 等於選中 Ctr+D 選中相鄰的單詞 0. 知識點 Express MongoDB 專案 1. 反饋 callback是不是相當於函式自呼叫? 很簡單,函式也是一種資料型

node.js學習筆記(5)--MongoDB下載及安裝

MongoDB 是由C++語言編寫的,是一個開源的文件型資料庫。 MongoDB 將資料儲存為一個文件,資料結構由鍵值(key=>value)對組成。MongoDB 文件類似於 JSON 物件。欄位值可以包含其他文件,陣列及文件陣列。 主要特點 MongoDB的提供了一個面向文件儲存,操作起

node.js學習筆記(7)--Node.jsMongoDB簡單互動

1.建立工程 E:\test>express mongo -e create : mongo create : mongo/package.json create : mon

node.js學習筆記(6)--MongoDB簡單入門

1.MongoDB bin目錄介紹   mongo.exe:客戶端,支援js語法   mongod.exe:服務端   mongodump.exe:備份工具   mongorestore.exe:恢