Node 中 使用 Mongoose 操作 MongoDB 數據庫
1. 引入依賴
const mongoose = require('mongoose');
2. 連接數據庫
mongoose.connect('mongodb://localhost/test',{useNewUrlParser:true});
mongoose.set('useFindAndModify',false);
加上mongoose.set('useFindAndModify',false);
不然後面的 findByIdAndUpdate 會給報錯,問的話 可以看這裏
3. 獲取連接狀態
mongoose中基本上所有的異步操作都支持Promise
所以可以不使用回調函數的形式
let conn = mongoose.connection;
conn.on('error',(error) => {
//如果連接出現錯誤,可能需要將連接數據庫操作中的 localhost 改成 127.0.0.1
console.log(error);
}).once('open',() => {
console.log('MongoDB Connected...');
//這裏做連接成功後的事情
})
4. 創建文檔結構(Schema)
在連接數據庫成功後,我們就可以創建文檔結構了,這一步類似於關係數據庫中定義表結構,就是設計表
let userSchema = new Schema({
username:{
type:String,
required:true
},
password:{
type:String,
required:true
},
email:{
type:String,
validate:{
validator:(value) => {
return /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(email);
},
message:"郵箱格式有誤"
}
}
})
上面通過new
來創建一個 Schema
實例,數據各字段的約束通過一個對象傳入,這種方式類似於 vue 中子組件從父組件獲得數據時的操作。
關於各數據字段的中約束選項 可以看這裏 約束選項
5. 將定義好的文檔結構發佈爲模型,得到模型構造函數
let User = mongoose.model('User',userSchema);
mongoose.model()
的第一個參數是一個首字母大寫的單數形式的單詞,mongoose會將這個參數小寫複數化作爲 集合(表) 的名稱 ( users ) ,第二個參數就是上面剛剛創建的 文檔模式
6. 使用模板構造函數創建數據模型並保存
let user = new User({
userName:'Mockingjay',
password:'wow',
email:'[email protected]'
});
//將數據保存到數據庫中
user.save((err,data)=>{//err:保存出錯,data:保存的數據})
7. 通過模型構造函數來對數據進行刪改查的操作
//查詢構造函數所對應的表的所有數據
User.find((err,data)=>{});
//更新數據
User.findByIdAndUpdate(condition,updateData,(err,data)=>{//err:操作錯誤信息,data:更新的數據});
//刪除數據
User.findByIdAndDelete(id,(err,data)=>{});
其實每一種操作都還對應着許多API 戳這裏瞭解更多