【微信小程序】学习拾遗五(云开发、数据库、云函数、动态改变css样式)

云开发

使用微信开发工具内置的云开发功能,就不需要额外部署服务器及配置后台文件,只需要通过云开发功能,就可以使用数据库、云存储、云函数等组件。
使用云开发需要支付流量费用,相对服务器等还算是廉价服务,基本配置能够满足普通个人开发者学习使用。

数据库

链接:微信官方对数据库的说明信息
链接:微信官方数据库操作详细文档
操作数据库,需要在使用页的JS文件中,声明引入数据库。

//pages/index/index.js
const db = wx.cloud.database()

操作数据库,需要使用collection,指定数据库集合,然后通过其他命令,操作数据。

查询

从集合中查询数据,并全部获取,赋值给sinObj。

db.collection('singleKu').get().then(res=>{
      this.setData({
        sinObj:res.data
      })
 })
有条件查询

使用doc指定id查询,使用where指定特定字段查询。

const _ = db.command
db.collection('todos').where({
  // gt 方法用于指定一个 "大于" 条件,此处 _.gt(30) 是一个 "大于 30" 的条件
  progress: _.gt(30)
})
.get({
  success: function(res) {
    console.log(res.data)
  }
})
ES6的解构赋值

链接:菜鸟教程中ES6的解构赋值讲解
将获取到的集合数据中的各项数据,赋值给对应的变量。

fsub(e){
 var {title,author,content} = e.detail.value
console.log(title,author,content)
},

当要添加的是一个对象时,直接将对象赋值并上传。

fsub(e){
   let evl = e.detail.value  
  db.collection("questione").add({
     data:evl
   }).then(res=>{
     console.log(res)
   })
 },

更新数据

通过where指定字段查找,并使用update更新部分数据。

db.collection("questione").where({
      author:"yes"
    }).update({
      data:{
        author:"孙悟空"
      }
    }).then(res=>{
      console.log(res)
    })

使用doc指定id查找,并使用set方法替换整条数据。

db.collection("questione").doc("713dab6463a1af8b004a8e9a0ca12d09").set({
      data:{
        title:"花果山水帘洞"
      }
    }).then(res=>{
      console.log(res)
    })

删除数据

删除数据需要使用doc方法指定id。

delData(){
    db.collection("questione").doc("8655d51b638f2b1a016affec77e63fea")
    .remove()
    .then(res=>{
      console.log(res)
    })
  },

监听数据

使用watch方法,可以实时监听数据库表的变更并返回被变更的信息与变更后的信息。

db.collection('questione').watch({
      onChange:res=>{
        this.setData({
          sinObj:res.docs
        })
      },
      onError:err=>{
        console.log(err)
      }
    })

构建查询条件

通过使用多种可用方法,将数据有条件的查询与返回,可以节省时间和流量。
具体信息查阅官方文档

db.collection("questione")
    .limit(3)   //共查询3条数据
    .skip(3)    //每条之间跳过3条
    .field({       title:true    }) //每条只返回title字段
    .orderBy("title","asc")//根据title排序,asc升序,desc降序
    .get()
    .then(res=>{
      console.log(res)
    })

Command操作符

链接:微信官方平台上Command操作符的详细说明
要使用数据库操作符,需要在引入数据库后声明。

const db = wx.cloud.database();
const _ = db.command;  //_为官方建议用法,可以自定义命名

云函数

链接:微信官方平台对云函数的说明
微信开发工具内置的云函数功能,能够代替服务端。
在“cloudfunctions”文件夹中新建“Node.js云函数”。
没有“cloudfunctions”文件夹,就需要在根目录下新建该文件夹。
新建云函数后,在其中进行修改。
修改完成后,需要“上传并部署(云端安装依赖)”或右击修改的JS文件,选择“增量更新”。

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: //每个人都不同的环境 }) // 使用当前云环境
const db = cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {
  let {dataname,shownum,pagen} = event	//从项目中传入的数据
    return await db.collection(dataname).limit(shownum).skip(pagen)
    .get()		//return出获取到的数据
}

在项目文件中使用,不需要定义数据库,而需要引用云函数方法。

// pages/demo4/demo4.js/Page/
 getData(shownum=5,pagen=0){
    wx.cloud.callFunction({   //云函数方法
      name:"downData",		 //使用的云函数名称
      data:{				//需要传递给event的数据
        dataname:'questione',
        shownum:shownum,
        pagen:pagen
      }
    })
    .then(res=>{			//成功后返回的数据
      let oData = this.data.dataList
      let nData = oData.concat(res.result.data)
      this.setData({
        dataList:nData
      })
    })
  },

云函数具有更大的自由操作性和部署的便捷性。

列表渲染下点击单项改变css样式

1、在js文件中创建被渲染数组,并编写事件,获取数据。

// pages/demo5/demo5.js/Page/
data: {
    weekData:["周一","周二","周三","周四","周五","周六","周日"],
    numr:8
  },
  clickr(e){
    this.setData({
      numr:e.target.dataset.id
    })
  },

2、定义css选中样式。

/* pages/demo5/demo5.wxss */
.active{
  color:rgb(255, 0, 85);
  background-color: lightgreen;
}

view view {
  background-color: lightsalmon;
  font-size: 60rpx;
  border: 2rpx solid #ffffff;
  color: #ffffff;
}

3、创建页面渲染数据,并添加事件和事件数据。

<!--pages/demo5/demo5.wxml-->
<view>
<view wx:for="{{weekData}}" wx:key="index" bindtap="clickr" data-id="{{index}}"
  class="{{index==numr?'active':''}}"  
  <!-- 使用三元运算式对样式动态添加 -->
>{{item}}</view>
</view>

4、如此就可以做到让列表内对象在点击时进行样式改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值