介紹
無論是mysql還是mongodb,傳統的與資料庫互動的方式都是按照他們提供的API來寫代碼,它們提供的API往往不是很容易理解,而且難以記憶,如果傳錯了引數,寫錯一個符號都要查檔案,
ORM(物件關系映射,Object Relational Mapping)框架,允許我們面向物件操作,不需要記憶任何的資料庫API,只需要操作物件即可,由框架底層去呼叫資料庫API,這樣就大大提高了程式員的開發效率,
不過既然多了一層封裝,肯定要損失一點點的性能,可以忽略不計,
在NodeJS中,操作mongodb最好的ORM框架就是mongoose,
安裝mongoose
npm install mongoose --save
如果你本機沒有安裝nodejs驅動,會自動安裝nodejs驅動,因為mongoose依賴nodejs驅動,
檔案參考:mongoose官方檔案:http://mongoosejs.com/docs/index.html
連接資料庫
'use strict'
let User = require('./model/user');
let mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1/test");
let db = mongoose.connection;
// 監聽錯誤的事件
db.on('error', err => {
console.log(err);
});
db.once('open', () => {
console.log('mongodb connect successfully!');
highOrderQuery()
});
模型定義
mongoose使用schema來描述資料的格式、欄位、規則,有了schema之后可以生成model來操作資料,
一般我們新建一個model目錄來存放這些模型檔案,比如這里我們新建一個model/user.js
'use strict'
let mongoose = require('mongoose');
let schema = mongoose.Schema({
name: String,
age: Number,
address: String,
fav: [String]
}, {
versionKey: false
}
);
module.exports = mongoose.model("users", schema);
增刪改查
直接查看檔案中Model相關API,
async function testCRUD() {
//增
let arr = [
{
name: "李連杰", age: 50, address: "北京", fav: ["功夫", "演電影", "旅游"]
},
{
name: "吳京", age: 48, address: "北京", fav: ["功夫", "演電視劇", "運動"]
},
];
let res = await User.create(arr);
console.log(res);
//查
let res = await User.findOne({address: "北京"}); //查詢出符合條件的第一個檔案
console.log(res);
let res = await User.find({address: "北京"}); // 查詢出符合條件的所有檔案
console.log(res);
//改
let res = await User.updateOne({_id: "5b4065e548651d0b7035843d"}, {age: 11, address: "深圳"});
console.log(res);
//刪
let res = await User.deleteOne({_id: "5b4065e548651d0b7035843d"});
console.log(res);
}
高級查詢
所有條件運算子:https://docs.mongodb.com/manual/reference/operator/query/,
async function highOrderQuery() {
//條件查詢
let res = await User.find({age: {$gt: 15}});
//陣列查詢
let res = await User.find({
fav: "玩游戲"
});
//分頁查詢
// sort({age:1}) : 1(默認)是從小到大,-1是從大到小
// sort("-age") :可以直接寫`-`,表示從大到小
// select("")只選擇某個或某幾個欄位;select("-fav")不選某個欄位
let res = await User.find().skip(0).limit(2).sort("-age").select("-fav");
console.log(res);
}
參考
黑馬程式員 120天全堆疊區塊鏈開發 開源教程
https://github.com/itheima1/BlockChain
一番霧語:操作mongodb最好的NodeJS框架,
![]() |
免費知識星球:一番碼客-積累交流 微信公眾號:一番碼客 微信:Efon-fighting 網站:http://www.efonmark.com |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/143976.html
標籤:JavaScript
上一篇:本地存盤localStorage和sessionStorage
下一篇:js閉包

