Arangodb(五)——express連接Arangodb數據庫並實現CRUD(express+node+orango)

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

學習資料

Orango

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章