1. 程式人生 > >mongoose使用之建立連線資料庫

mongoose使用之建立連線資料庫

mongoose用法

下載

首先你需要有個MongoDB資料庫,然後進入MongoDB的資料夾中的bin檔案啟動它(使用cmd)

mongod.exe -dbpath xxxxxxx(自己指定路徑,mongoDB資料檔案存放的地方)

啟動好後,下載mongoose外掛

npm install mongoose

mongoose的使用

mongoose的引用

在檔案中,通過require引用

    let mongoose = require('mongoose');
使用mongoose連線MongoDB資料庫

使用mongoose連線MongoDB有以下幾種形式:
1.最簡單的(無密碼,使用者名稱等)

mongoose.connect(‘mongodb://localhost/database’)

2.有密碼、使用者名稱、引數等

mongoose.connect(‘mongodb://username:[email protected]:port/database?options…’);

3.將需要傳入的引數進行封裝

    let url = "xxxxx";
    let options = {
        db: { native_parser: true },
        server: { poolSize: 5 },
        replset: { rs_name: 'myReplicaSetName'
}, user: 'myUserName', pass: 'myPassword' ... } mongoose.connect(url,options); //這裡的options優先於連線字串中傳遞的選項(第二種方法的option)

第三種方法options中可寫入的有:

鍵名 描述
db 資料庫設定
server 伺服器設定
replset 副本集設定
user 使用者名稱
pass 密碼
auth 鑑權選項
mongos 連線多個數據庫

例子(第一種方法)如下

    let mongoose = require('mongoose'); //引用
    mongoose.connect("mongodb://127.0.0.1:27017/try",(err)=>{
        if(err){
            console.log(“連線失敗”);
        }else{
            console.log("連線成功");
            ...
        }
    })

這裡寫圖片描述
另外,如果需要細緻的監聽connect連線的狀態從而再執行下一步,可這樣

    mongoose.connection.on("狀態",()=>{
        console.log("xxx");
        ....
    })
    狀態分為以下幾種:
    connected   已連線
    error       連線失敗
    disconnected    斷開連線
        ......
連線多個數據庫
    mongoose.connect('urlA,urlB,...', {
         mongos : true  //必須的
    },[callback])

建立資料庫,表以及欄位名

Schema(建立欄位名)

用來定義欄位名和型別,支援的型別包括以下8種:

型別 描述
String 字串
Number 數字
Date 日期
Buffer 二進位制
Boolean 布林值
Mixed 混合型別
ObjectId 物件ID
Array 陣列

使用方法:

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;

    var mySchema = new Schema({
        title:  String,
        author: String,
        username:   String,
        password: Number
    });

需要注意:宣告欄位型別只能通過以下兩種方法
1. 宣告的型別開頭大寫如

title : String


  1. 宣告的型別使用全小寫的話用引號括住

title : ‘string’

Model(將Schema模型例項化)

將Schema例項化,這一步驟是必須的!

    var schema = new mongoose.Schema({
        username:String, 
        password: "number"
    });
    var Model = mongoose.model('Model', schema);

將資料存入到建立的表中

有三種方法,

方法一:save()

例項化文件document

    var mongoose = require('mongoose');
    mongoose.connect("mongodb://127.0.0.1:27017/try", function(err) {
    if(err){
        console.log('連線失敗');
    }else{
            console.log('連線成功');
            var schema = new mongoose.Schema({
                username:"string",
                password:"number"
            });
            var Model = mongoose.model('Model', schema);
            var doc1 = new Model({ 
                username:"admin",
                password:123456
            });
            doc1.save();  //這一步驟是必須的!save函式中可以使用cb
        }
    });

這裡寫圖片描述

方法二:create()

model中的create()方法,該方法可同時新增多個文件

Model.create(docs,[callback])

新增{username:”John”}以及{username:”Jonny”}

    var mongoose = require('mongoose');
    mongoose.connect("mongodb://127.0.0.1:27017/try", function(err) {
        if(!err){
            var schema = new mongoose.Schema({
                username:"string",
                password:"number"
            });        
            var temp = mongoose.model('temp', schema);   
            temp.create(
            {username:"John"},
            {username:"Jonny"},function(err,doc1,doc2){
                    console.log(doc1); 
                    console.log(doc2); 
                    //回撥函式
                });       
            }           
    });
方法三:insertMany()

Model.insertMany(doc(s), [options], [callback])

新增{username:”John”}以及{username:”Jonny”}

    var mongoose = require('mongoose');
    mongoose.connect("mongodb://127.0.0.1:27017/try", function(err) {
        if(!err){
            var schema = new mongoose.Schema({
                username:"string",
                password:"number"
            });        
            var temp = mongoose.model('temp', schema);   
            temp.insertMany(
            {username:"John"},
            {username:"Jonny"},function(err,doc1,doc2){
                    console.log(doc1); 
                    console.log(doc2); 
                    //回撥函式
                });       
            }           
    });

這三種方法中,只有save()方法需要一個一個save資料插入的,其他兩個可以直接多個數據插入。

另外,以上的建立資料庫,表格,欄位名等等示例中,如果資料庫中已存在的,他將不會重新建立,而只會新增資料,如

    var mongoose = require('mongoose');
    mongoose.connect("mongodb://127.0.0.1:27017/try", function(err) {
        if(!err){
           ...      
    });

上面的程式碼示例中無數次連線try資料庫。這裡代表著兩種意思:

  • 若MongoDB資料庫中有try資料庫直接連線
  • 若MongoDB資料庫中沒有try資料庫則建立

table(表)、欄位名也同上。另外,若是建立完schema之後需要新增漏掉的欄位名,可這樣

    var MySchema = new Schema({ name: 'string'});
    MySchema.add({password:"number"});