想信大家对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 }) })
-