javascript数据库基本操作

数据库是现代信息技术中非常重要的技术,与生活(衣食住行)息息相关,刷饭卡吃饭,淘宝购物、12306购票、刷微信付款其实都是对数据库的基本操作。

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。一个数据库由多个表空间(Tablespace)构成。 https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93

本公众号所关联的小程序新工科课程设计HTML5小程序(猝不及防的AD)自然也不例外,列表中信息都是读取腾讯云数据库中的记录。

例如js读取腾讯云数据库操作代码如下:

function queryRecords(table, cond, callBackFun) {
  const db = wx.cloud.database();
  //定义每次获取的条数
  const MAX_LIMIT = 20;
  //先取出集合的总数
  db.collection(table).count().then(res => {
    const total = res.total; console.log("查询到数据库中记录数为:",total,"现开始读取之");
    //计算需分几次取
    const batchTimes = Math.ceil(total / MAX_LIMIT);
    //初次循环获取云端数据库的分次数的promise数组
    for (let i = 0; i < batchTimes; i++) {
      const promise = db.collection(table).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get({
        success: res => {
          callBackFun(res.data, i, batchTimes,total);
          //console.log('[数据库] [查询记录] 成功: ', res.data);
        },
        fail: err => {
          wx.showToast({
            icon: 'none',
            title: '查询记录失败'
          });
          callBackFun([]);
          //console.error('[数据库] [查询记录] 失败:', err);
        }
      });
    };
  });
}

function fectchLiveData(fetchDataBack){
  var allData = [];
  //由于需要同步获取数据,可能较慢,最好加入加载动画
  wx.showLoading({title: '加载中',}); 
  queryRecords("xxx-DB", {},function (data,i,batchTimes,total) {
    //console.log("数据库才查询完成,慢死!");
    //二次循环根据获取的promise数组的数据长度获取全部数据push到records数组中
    for (let j = 0; j < data.length; j++) {
      allData.push(data[j]);
    } console.log(i, batchTimes, allData.length);
    if (allData.length == total){
      console.log("Acquired Total Data Legth:", total, "Right Now!");
      fetchDataBack(allData);
    }
  });
}

腾讯云数据库增查改删基本操作:

function addRecord(table, newRec) {
  const db = wx.cloud.database()
  db.collection(table).add({
    data: newRec,
    success: res => {
      wx.showToast({
        title: '新增记录成功',
      })
      console.log('[数据库] [新增记录] 成功,记录 _id: ', res._id)
    },
    fail: err => {
      wx.showToast({
        icon: 'none',
        title: '新增记录失败'
      })
      console.error('[数据库] [新增记录] 失败:', err)
    }
  });
}

function queryRecords(table, cond, callBackFun) {
  const db = wx.cloud.database();
  //cond={name:'张无忌'};
  // 查询当前用户所有的 counters
  console.log(table,cond);
  db.collection(table).where(cond).get({
    success: res => {
      callBackFun(res.data);
      console.log('[数据库] [查询记录] 成功: ', res.data);
    },
    fail: err => {
      wx.showToast({
        icon: 'none',
        title: '查询记录失败'
      });
      callBackFun([]);
      console.error('[数据库] [查询记录] 失败:', err);
    }
  });
}

function queryRecord(table, curOpenid, recQueryed/*没有用*/, callBackFun=null) {
  const db = wx.cloud.database()
  // 查询当前用户所有的 counters
  db.collection(table).where({
    _openid: curOpenid
  }).get({
    success: res => {
      recQueryed = res.data;
      callBackFun(res.data);
      console.log('[数据库] [依据openid查询记录] 成功: ', res.data);
    },
    fail: err => {
      wx.showToast({
        icon: 'none',
        title: '查询记录失败'
      });
      callBackFun([]);
      console.error('[数据库] [依据openid查询记录] 失败:', err);
    }
  });
}

function updateRecord(table, recID, newRec) {
  const db = wx.cloud.database();
  //console.log("newRec", newRec);
  db.collection(table).doc(recID).update({
    data: newRec,
    success: res => {
      console.log('[数据库] [更新记录] 成功: ', res);
    },
    fail: err => {
      icon: 'none',
        console.error('[数据库] [更新记录] 失败:', err)
    }
  })
}

function queryAndUpdateRecord(table, curOpenid, newRec) {
  const db = wx.cloud.database()
  // 查询当前用户所有的 counters
  db.collection(table).where({
    _openid: curOpenid
  }).get({
    success: res => {
      console.log('[数据库] [查询openid记录] 成功: ', res.data);

      if (res.data.length != 0) {
        updateRecord(table, res.data[0]._id, newRec);
      } else {
        addRecord(table, newRec);
      }
    },
    fail: err => {
      wx.showToast({
        icon: 'none',
        title: '查询更新记录失败'
      });
      console.error('[数据库] [查询更新记录] 失败:', err);
      return '';
    }
  });
}

原文发布于微信公众号 - 传输过程数值模拟学习笔记(SongSimStudio)

原文发表时间:2019-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券