想信大家對MongoDB已經很熟悉了,在MongoDB中Mongoose
用來連接Node.js,那麼在Arangodb中用什麼來連接Node.js呢?那就是 Orango
。
🍊 What
Orango是用於Node.js,Foxx和Web瀏覽器的ArangoDB對象建模器(ODM)。用來連接數據庫、CRUD、驗證、處理數據等相關操作。
🍊 How
- express搭建服務
npm install express --save -g
express 項目名
- 安裝
Orango
🍊//npm npm i orango --save //yarn yarn add orango
- Importing
// Using Node.js `require()` const orango = require('orango') // Using ES6 imports import orango from 'orango'
- express搭建項目中引入(app.js)
const orango = require('orango'); const { EVENTS } = orango.consts; // 引入連接數據庫的方法 const db = orango.get('_system'); // 連接默認數據庫_system db.events.on(EVENTS.CONNECTED, conn => { console.log('🥑 Connected to ArangoDB:', conn.url) //conn.url是數據庫的地址而不是服務端的地址 }) db.events.on(EVENTS.READY, () => { console.log('🍊 Orango is ready!') }) async function main() { await orango.connect() } main()
好啦,服務端搭建好和數據庫連接成功後接下來咱們看看CRUD吧。
🍊CRUD
在ArangoDB中實現增刪改查操作過程與MongoDB中的大致是一樣的,以users
集合爲例。
- models
注意:上面的const orango = require('orango'); const userSchema = new orango.Schema({ name:String, age:Number, sex:String }) module.exports = orango.model('users', userSchema);
users
集合名如果是單數形式會自動創建複數形式的集合名。 - routes
-
✅ 增
- 代碼
router.post('/insertData', async (req, res)=>{ let {name, sex, age} = req.body; let params = { name, sex, age } let result = await User.insert(params).return(); //注意:要返回插入的數據得加上return res.json({ status: 200, msg:"插入成功!", result: result }) })
- postman
- ArangoDB可視化界面
- 代碼
-
✏️ 改
router.put('/updateData', async (req, res) => { let {_key,name,sex,age} = req.body; let result = await User.update({ name: name, sex: sex, age: age }).where({ _key: _key}).return(); res.json({ status: 200, result: result }) })
注意:在修改時若報錯,加上
try...catch
-
🍊 查
-
查詢所有數據
router.get('/getData', async (req, res)=>{ let result = await User.find(); res.json({ status: 200, result: result }) })
-
按條件查詢
router.get('/getDataWhere', async (req, res) => { let result = await User.find().where({_key:req.body._key}); res.json({ status: 200, result: result }) })
注意:mongoDB中的查詢條件在
find()
中,若在ArangoDB中按條件查詢時條件在where
中寫。
-
-
❎刪
router.delete('/deleteData', async (req, res)=>{ let result = await User.remove().where({_key:_key }); res.json({ status: 200, result:result }) })
-