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

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