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)的两种方法的实现,大家若有其他的方法欢迎在下面分享哦👇👇👇 !

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值