作家
登录

前端要革命?看我在 JS 里写 SQL

作者: 来源: 2017-10-16 09:34:45 阅读 我要评论

         this.getData()

       })

     }).catch(e=>{

       console.err(e)

     })

   },

  /**

    */

写完之后逻辑很复杂,似乎没有100行代码实现不了(当然有大年夜神比我活儿好)

  •    async getData(){

         //接口请求数据并处理成三个扁平数组

         let data =  await this.getMenuData()

         for(let i in data){

           //创建表并存储数据

           db.create(i,data[i])

         }

         //将数据交付给页面UI组件

         this.setSelectData()

     db.insert('testTable',[

    tableName:表名

  • createTable

    •   /**

          * 从新萌芽数据

          * @param data 点击菜单携带的数据

          * @param index 点击菜单的序号

          * @param all 三个菜单当前选中数据

          */

        async onSelect(data,index,all){

           let target = [],condition = {}

           //营业逻辑:处理萌芽前提

           if(all['0'] && all['0']['name']!=defaultData[0].default.name)condition['gameName'] =all['0']['name']

           if(all['1'] && all['1']['name']!=defaultData[1].default.name)condition['platName'] =all['1']['name']

           if(all['2'] && all['2']['name']!=defaultData[2].default.name)condition['typeName'] =all['2']['name']

           //创建三个萌芽义务

           let tasks = ['game','plat','type'].map((v,k)=>{

               return db.select(v,this.formatCondition(v,condition),'name,value','rowid desc','name').then((res)=>{

                 target.push({

                   options:res.data,

                   defaultOption:defaultData[k].default,

                   clickHandle:this.onSelect

                 })

               })

           })

         //履行萌芽

         await Promise.all(tasks)

      语法:delete(tableName,condition)

    •      //将数据交付给联动菜单组件应用

           this.selectData = target

         }

      以上代码即可完成联动菜单所须要的数据治理工作,看起来是不是比较清楚?

      应用Database.js的优势

      1.将数据构造化存储于Storage中,避免了以文本情势存入Storage或cookie中再解析的机能消费流程。

      在日新月异的前端范沉闼楝前端工程师能做的工作越来越多,自负年夜nodejs出现后,前端越来越有革了传统后端命的趋势,本文就再补一刀,具体解读如安在js代码中履行标准的SQL语句

      Database.js应用文档

      openDatabase

      • 功能:更新数据

      • 功能:打开数据库,不存在则创建

      • 语法:openDatabase(dbName,dbVersion,dbDescription,dbSize,callback)

      • 参数:

        •    },'distinct name,pirce','price desc')

          update

          • dbName:数据库名

          • dbVersion:数据库版本(打开已存在数据库时,版本号必须一致,不然会报错)

          • callback:回调函数

        query

        • 功能:履行sql语句,支撑多表萌芽

        • 语法:query(sqlStr,args = [],callback,errorCallback)

        • 参数:

          • sqlStr:sql语句

          • args(Array):传入的数据,调换sql中的?符号

          • dbDescription:数据库描述

          • callback:成功回调

          • errorCallback:掉败回调

        • 示例:

         //插入数据

         db.query('INSERT INTO testTable(id,title) VALUES (?,?)',[1,'这是title'])

         //多表萌芽

         db.query('select game.*,plat.* from game left join plat on game.name = plat.gameName')

        isExists

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)