小程序云开发学习笔记2
发布于 3 年前 作者 sdai 5194 次浏览 来自 分享

上一个笔记记录了如何用云开发函数实现数据的查找和增加,今天就继续用我之前的例子来实现商品的更新和删除操作吧。

首先是更新操作,为了方便起见,先只更新下书本的价格,在前端设置输入框和点击事件,js获取输入的内容,然后按钮点击事件调用云开发函数进行数据更新。

实现修改数据的方法写在点击事件对应的函数里:

然后就是测试是不是能根据输入修改价格,但发现弹出提示“更新成功”,但价格那一栏的数据并没有更新,既然显示”更新成功”,那么操作数据的权限肯定是没有问题的,我也实时用this.getDatail()刷新了数据,为了数据没有更新?

经过查找,原来在数据库用手动方式添加的数据,本身不携带字段_openid,没有_openid字段的数据无法更新通过这种简单的方式更新数据:

这里貌似需要用到云函数的相关知识,这里如果要实现更新,只能给数据自己加上一个字段_openid。而如果通过wx.cloud.database.collection(“表名”).add添加的数据,默认会携带添加数据时的_openid,因此,可以对数据进行修改。这可能是微信处于安全方面的考虑吧,也就是说用户只能修改自己创建的数据,而不用轻易修改开发者创建的数据。

   然后是删除操作,首先是简单的页面:

依然是button点击事件进行触发,这里删除操作是有风险的,一般建议不删除,即使要删除,也可以设置一个“deletestatus”字段,删除时将字段值由0设置为1,因为数据一旦删除就没有了,而不知道什么时候又能用到,尤其是诸如订单、查询历史这些信息。当然这里还是直接删除,用wx.showmodel()弹出确认框,接下来是删除操作的函数:

然鹅,点击确认删除后,事情没有想象地那么简单,系统弹出警告:

权限我已经打开,既然又是无法删除,会不会又是_openid没有所导致的?于是我通过wx.cloud.database.collection(“表名”).add添加数据,这样该条数据会默认携带我的openid,然后点击删除这条数据,显示成功:

这么看来,数据有无_openid在更新和删除权限上是有区别的,一般我们添加数据也是管理员或者用户添加,会生成_openid字段,这样才有更新和删除的权限。当然,我觉得没有_openid的字段应该也可以有权限更新删除,可以继续学习学习。这点和传统后端有点不同,传统后端倒是没有太多权限方面的考虑(有可能是我没涉及到),而且后端查询异常需要自己捕获和处理,小程序这边自己帮我们很好的进行了处理。

下面是最基本的增删改查操作的汇总:

          //查询操作
     wx.cloud.database().collection("表名")
     .doc("数据对应的_id")  //查询单条记录时可以用_id绑定
     .where({ //需要条件查询可以添加where
        字段名:值
     })
     .get()
     .then(res=>{
       //成功之后的处理
     })
     .catch(err=>{
       //失败后的处理
     })

     //增加操作
     wx.cloud.database().collection("表名")
     .add({ 
        data:{
          字段名:值   //这里来设置数据各字段的值
        }
     })
     .then(res=>{
       //成功之后的处理
     })
     .catch(err=>{
       //失败后的处理
     })

     
    //更新操作
    wx.cloud.database().collection("表名")
    .doc("数据对应的_id")  //查询单条记录时可以用_id绑定
    .update({ 
      data:{
        字段名:值   //这里来设置需要更新的字段的值
      }
   })
    .then(res=>{
      //成功之后的处理
    })
    .catch(err=>{
      //失败后的处理
    })

    //删除操作
    wx.cloud.database().collection("表名")
    .doc("数据对应的_id")  //删除单条记录时可以用_id绑定
    .remove()
    .then(res=>{
      //成功之后的处理
    })
    .catch(err=>{
      //失败后的处理
    })

进行微信小程序云开发,你几乎不需要对传统的数据库操作语句进行了解,就可以轻松上手,对于编程小白和非计算机专业的学生比较友好,当然,如果学习了数据库知识,再对比云开发,肯定能加深对数据库的理解。



7 回复

学习到了!

之前也有想过做这种类似的,今天学习到了,赞!

不错不错继续加油

在控制台添加的数据没有openid,就不能在小程序端处理吗?

他集合读写权限会影响_openid字段的写入,可以

let {OPENID, APPID} =  cloud.getWXContext()

拿到openid之后再换个字段名称写入咯。权限控制这一块,中间层没法做太多,openid只能做标识,不能做用户凭据,在设计的时候把公共的数据放在这个文档型数据库里面就好了。

写得很棒,加油

高手,学到了

回到顶部