ArangoDB(八)——ArangoDB中實現增刪改查的兩種方法

這節主要講Node.js利用arangojs 操作 ArangoDB(也就是實現CRUD)的兩種方法,方法不唯一哦。方法一在上節ArangoDB(七)中有提到過。

方法一

  • C

    • 🍐 routes(user.js

      router.post('/addUser',async (req, res)=> { 
        let dataParam = {
          "name": req.body.name,
          "age": req.body.age
        };
      
        let result =await service.addUser(dataParam);    //在service中執行addUser()
        return res.json(result);
      });
      
    • 🥑service(user.js

      module.exports = {
          // 增加數據
          
          async addUser(dataParam) {
               let data = await collection.save(dataParam);
               let doc = await collection.document(data);
               return doc;
          }
      }
      

    補充內容:

    collection.document()

    • 語法: async collection.document(documentHandle, [opts]): Document

    • Arguments

      • documentHandle: string

        可以是集合中文檔的_id或_key,也可以是文檔(即具有_id或_key屬性的對象)。

      • opts: Object (optional)

        如果設置了opts,則它必須是具有以下任何屬性的對象:

        • graceful: boolean (Default: false)

          如果設置爲true,則該方法將返回null,如果文檔不存在,則不會引發錯誤。(❓❓❓)

        • allowDirtyRead:boolean(Default: false)

  • 🔍R

    • collection.all()
      • 語法async collection.all([opts]): Cursor

        執行查詢以獲取集合中的所有文檔。返回查詢結果的新Cursor實例。

      • Arguments

        • opts: Object (optional)
      • 🌰

        • 🍐 routes(user.js)

          router.get('/getUser', async (req, res) => {
            let list = await service.getAllUsers();
            return res.json(list);
          });
          
        • 🥑services(user.js)

          // 獲取數據
          async getAllUsers() {
              let value = await collection.all();
              return value._result;
          }
          
        • 效果圖 在這裏插入圖片描述

  • ✍️U

    • collection.update()
      • 語法async collection.update(documentHandle, newValue, [opts]): Object

        使用給定的documentHandle和給定的newValue更新(合併)文檔的內容,並返回一個包含文檔元數據的對象。

      • Arguments

        • documentHandle: string

          可以是集合中文檔的_id或_key,也可以是文檔(即具有_id或_key屬性的對象)。

        • newValue: Object

          文檔的新數據

        • opts: Object (optional)

      • 🌰

        • 🍐 routes(user.js)

          router.post('/updateUser',async (req, res)=> { 
             let dataParam = {_key,name,age}=req.body;
          
            let result =await service.updateUsers(dataParam);    
            return res.json(result);
          });
          
        • 🥑services(user.js)

          // 修改數據
          async updateUsers(param){
              let dataUpdate=await collection.update(param._key,param);
              let data=await collection.document(dataUpdate);
              return data;
          }
          
        • 效果圖
          在這裏插入圖片描述

  • D

    • collection.remove()
      • 語法async collection.remove(documentHandle, [opts]): Object

      • Arguments

        • documentHandle: string

          可以是集合中文檔的_id或_key,也可以是文檔(即具有_id或_key屬性的對象)

        • opts: Object (optional)

      • 🌰

        • 🍐 routes(user.js)

          router.delete('/removeUser',async (req, res)=> { 
            let _key=req.body._key;
            let result =await service.removeUsers(_key);   
            return res.json(result);
          });
          
        • 🥑services(user.js)

           // 刪除數據
              async removeUsers(param){
                  let dataRemove=await collection.remove(param);
                  return dataRemove;
              }
          
        • 效果圖
          在這裏插入圖片描述

方法二

方法二中routes文件夾中的內容與方法一中的一樣,主要區別在於services文件夾中的內容,一起來看看吧 🙈🙈🙈

  • C

    增加數據同上👆👆👆

  • 🔍R

    • 查詢所有數據

      • 🍐 routes(user.js)

        router.get('/getUser',async function(req, res) {
          let list=await service.getAllUsers();
          return res.json(list);
        });
        
      • 🥑 services(user.js)

        async getAllUsers (){
            let result=await myDB.query('FOR u IN users RETURN u');
            return result._result;
        },
        
    • 按條件查詢(_key)

      • 🍐 routes(user.js)

        router.get('/getUserByKey',async function(req, res) {
          let keyParam=req.query._key;    
          let list=await service.getUsersByKey(keyParam);
          return res.json(list);
        });
        
      • 🥑 services(user.js)

        async getUsersByKey(param){
            let bindVars={'_key':param};   //此行很重要
            let result =await myDB.query('FOR u IN users FILTER u._key == @_key RETURN u',bindVars);
            return result._result;
        },
        
        

      注意 :上面bindVars的定義很重要。

  • ✍️U

    根據_key來修改。

    • 🍐 routes(user.js)

      router.post('/updateUser',async (req, res)=> { 
        let dataParam = {_key,name,age}=req.body;
      
        let result =await service.updateUsers(dataParam);    
        return res.json(result);
      });
      
    • 🥑 services(user.js)

      async updateUsers(param){
          let bindVars={'_key':param._key,'name':param.name,'age':param.age};
          let result =await myDB.query('FOR u IN users FILTER u._key == @_key UPDATE u WITH { name:@name, age:@age } IN users RETURN NEW',bindVars);
          return result._result;
      },
      

    注意:想要返回修改後的結果加上RETURN NEW

    • 效果圖

      注意get的傳參位置 😄😄😄

  • D

    • 🍐 routes(user.js)

      router.delete('/removeUser',async (req, res)=> { 
        let _key=req.body._key;
        let result =await service.removeUsers(_key);    
        return res.json(result);
      });
      
    • 🥑 services(user.js)

      async removeUsers(param){
          let bindVars={'_key':param};
          let result =await myDB.query('FOR u IN users FILTER u._key == @_key REMOVE u IN users', bindVars);
          return result._result;
      }
      

好啦,以上就是Node.js利用arangojs 操作 ArangoDB(也就是實現CRUD)的兩種方法的實現,大家若有其他的方法歡迎在下面分享哦👇👇👇 !

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