美文网首页
微信小程序+知晓云上手TodoList

微信小程序+知晓云上手TodoList

作者: 黄秀杰 | 来源:发表于2020-08-07 17:27 被阅读0次

    开发文档

    https://doc.minapp.com/

    后台创建

    入口
    授权
    插件版SDK

    插件的思路确实很独特,帮用户省去一些配置,比如设定安全服务域名

    初始化校验
    校验通过

    如果看到如上界面,代码校验通过

    用户表
    通过查看用户表,确实通过wx.BaaS.auth.loginWithWechat()创建了一个用户

    CURD

    原型

    参考文档

    https://doc.minapp.com/js-sdk/schema/#wechat-32

    报错信息

    未建表报错如下:Error: 404: not found
    未建字段报错如下:Error: 400: The payload does not match the

    数据添加结果

    既要建表还要建字段,这跟之前用过的BaaS【LeanCloud Bmob 微信云】都不相同,哪怕是微信云开发,也只是要建好表,保证表存在就可以。

    增加数据
    // 获取文本框里的内容
    const title = e.detail.value
    // 如果文本为空,给出toast提示
    if (!title) {
      wx.showToast({
        title: '请输入内容'
      })
      return
    }
    let tableName = 'Todo'
    // 通过 `tableName` 实例化一个 `TableObject` 对象,操作该对象即相当于操作对应的数据表
    let Todo = new wx.BaaS.TableObject(tableName)
    // 本地创建一条空记录
    let todo = Todo.create() // todo 为 TableRecord 实例
    
    let item = {
      title: title
    }
    
    // 为上面创建的空记录赋值,并保存到服务器,save() 方法返回一个 Promise 对象
    todo
      .set(item)
      .save()
      .then(res => {
        console.log(res)
        wx.showToast({
          title: '保存成功'
        })
      })
    

    添加成功后,数据同时返回一份到res.data中,方便二次使用,而不用再去查询一遍数据库。

    回显数据
    读取数据

    返回的数据在res.data.objects中

    数据读取

    代码如下

    loadData() {
     let Todo = new wx.BaaS.TableObject('Todo')
     const query = new wx.BaaS.Query()
    
     Todo.setQuery(query)
       .find()
       .then(res => {
         // find 方法返回值为一个 Promise
         console.log(res)
         const todos = res.data.objects
         this.setData({
           todos: todos
         })
       })
    },
    
    修改数据
    edit(e) {
      // 获取input组件上的取值
      const title = e.detail.value
      // 设定currentIndex值
      const index = e.currentTarget.dataset.index
      // 获取原来数据源
      let todos = this.data.todos
      // 修改当前元素的title值
      const recordID = todos[index]._id
      // 更新 tableName 为 'Todo' 的数据表中 id 为 currentId 的数据行的 title 字段
      let tableName = 'Todo'
    
      let Todo = new wx.BaaS.TableObject(tableName)
      let todo = Todo.getWithoutData(recordID)
    
      todo.set('title', title)
      todo.update().then(
        res => {
          // success
          wx.showToast({
            title: '修改成功'
          })
          this.loadData()
          this.setData({
            currentIndex: -1
          })
        },
        err => {
          console.log(err)
          // err
        }
      )
    },
    

    顺便提一下,如果在js代码中要读取数据对象的属性,直接使用点语法就可以,不必使用.get(),其实也没有.get()方法,这跟之前用的BaaS有所不同

    删除
    // 删除 tableName 为 'Todo' 的数据表中 recordID 的数据项
    let tableName = 'Todo'
    let recordID = this.data.todos[item]._id
    
    let Todo = new wx.BaaS.TableObject(tableName)
    Todo.delete(recordID).then(
      res => {
        // success
        this.loadData()
        wx.showToast({
          title: '删除成功'
        })
        // checkIndices将它复位
        this.setData({
          checkIndices: []
        })
      },
      err => {
        // err
      }
    )
    

    【正文完】

    源码

    https://gitee.com/laeser/demo-weapp 代码位于pages/todo-zx文件夹下

    关注我

    mp

    相关文章

      网友评论

          本文标题:微信小程序+知晓云上手TodoList

          本文链接:https://www.haomeiwen.com/subject/icqqdktx.html