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
- 宣告的型別使用全小寫的話用引號括住
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"});