nodejs連線mongodb
首先我們先去 mongodb官網 註冊一個賬號,然後申請一個免費的伺服器,直接用qq郵箱註冊即可。
1.填寫相對應的註冊資訊,然後去qq郵箱確認下。
2.選擇伺服器,這邊我們選擇 FREE 就可以了,畢竟自己學習的話(521M)已經夠用了。然後我們點選 Create,進行下步操作。
3. 選擇伺服器,建議選擇香港、臺灣的伺服器。點選Create Cluster,建立伺服器。
4. 接下來會跳轉到這個頁面,記得左邊選擇Databases ,這樣就可以看到我們建立的伺服器了(這裡中間文字提示伺服器會在1-3分鐘建立完成)。
如果想建立新的伺服器可以點選右邊的Create,但是新的伺服器就需要花錢了。
等待幾分鐘後就可以看到我們自己建立的伺服器了。然後我們點選Connect,會出現選擇連線的彈框。
5. 點選Connect your appliction 就可以看到用nodejs 連線伺服器的例子。
點選 connect using MongoDB Compass , 可以看到使用MongoDB Compass連線伺服器的金鑰,密碼是自己賬號的密碼,記得把 '<password>' 替換成自己的密碼。
6. 沒有MongoDB Compass ,先去下載MongoDB Compass。可以在上一張圖中選擇 I do not have MongoDB Compass ,那麼就會提供下載連結,根據自己的系統選擇對應的安裝包。
然後開啟MongoDB Compass 在下方輸入金鑰,點選Connect 即可接連到我們的伺服器,並且可以對伺服器中的資料庫進行操作。
我們開始使用nodejs連線到資料庫,並進行一些簡單的操作。這裡使用的是mongoose 進行資料庫操作。
1.連線資料庫,在node環境下執行,控制檯輸出 connect success 就表示資料庫連線成功了。需要注意的是,如果我們的資料
const mongoose = require('mongoose'); // 資料庫名稱 const dbName = 'nodeStudy' // 連線伺服器的連結 把連結換成自己的伺服器連結就可以了。 const uri = `mongodb+srv://lvkeming:<password>@cluster0.qkwmi.mongodb.net/${dbName}?retryWrites=true&w=majority`; mongoose.connect(uri, (err) => { if (err) { console.log(err); return } console.log('connect success'); });
2.一些簡單的增刪改查
const mongoose = require('mongoose'); const dbName = 'nodeStudy' const uri = `mongodb+srv://lvkeming:<password>@cluster0.qkwmi.mongodb.net/${dbName}?retryWrites=true&w=majority`; mongoose.connect(uri, (err) => { if (err) { console.log(err); return } console.log('connect success'); }); /** * 資料校驗 * required 表示這個資料必須傳入 * max 最大值 * min 最小值 * enum 列舉型別,要求資料必須滿足列舉值 * match 增加的資料必須符合 match(正則)的規則 * maxlength 最大長度 * minlength 最小長度 * validate 自定義校驗,返回bool型別 */ // 這邊定義了 nodeStudy 裡面user表裡面的欄位型別,以及一些資料校驗 const UserSchema = new mongoose.Schema({ username: { type: String, unique: true }, password: String, name: String, age: Number, sex: String, tel: Number, status: { // 如果不傳status 那麼status預設值為1 type: Number, default: 1 } });
// 這邊第三個引數 才是和具體的表對應,這裡連線到了 user 這個表 const UserModel = mongoose.model('User', UserSchema, 'user'); // 查詢資料,第一個引數是查詢的條件 // 第二個引數是一個回撥函式,返回 err錯誤資訊 和 data查詢的結果 // 該語句查詢 username 為 lisi 的使用者 UserModel.find( { "username": "lisi" }, (err, data) => { if (err) throw err console.log(data); } ) // 增加資料 let addUser = UserModel({ username: 'lisi11', password: '12345678', name: '李四', age: 34, sex: '男', tel: 10086344567 }) addUser.save((err, res) => { if (err) throw err console.log(res); }) // 刪除資料 第一個引數是查詢的條件 // 第二個引數是一個回撥函式,返回 err錯誤資訊 和 res刪除結果 UserModel.deleteOne( { 'username': 'lisi11' }, (err, res) => { if (err) throw err console.log(res); } ) // 更新資料 第一個引數是查詢的條件 。 // 第二個引數是更新的資料,更新資料是合併更新。 // 第三個引數是一個回撥函式,返回 err錯誤資訊 和 res未更新的資料 UserModel.updateOne( { 'username': 'lisi11' }, { 'age': 45 }, (err, res) => { if (err) throw err console.log(res); } )