微信云开发开始

连接云数据库

数据库初始化

const = wx.cloud.database();
连接上指定数据库
db.clollection("demo1ist").get().then(res=>{
    this.setdata({
        dataobject:res.data
})
})
注意老版的es和新版的区别
  • 回调地狱

    getdata (
        db.wx.collection("demolist").get(
        {success:res=>{
            console.log(res)
            this.setdata({
                dataobj:res.data
            })
    }
    })
    )
    
  • 新版es6

    const = db.cloud.database()
    db.collection("text1").get().then(res=>{
    }).catch(err=>{
        console.log(res)
    })
    

    微信小程序加载中的样式

    wx.showLoading({
        title::"加载中",
        mask:ture
    })
    wx.hideloading()
    

    数据库添加

    db.collection().add({
        data:{
            title:"测试",
            author:'李四'
        }
    }).then(res=>{
    consloe.log(res)
        wx.hideloading()
    })
    
知识补充(form)
<from bindtap="binsub">
    <input name	="title">
</input>
<button from-type="submit">重置</button>
</from>
es6新语法规则
  • var {title,author,content}=res.detail.value;
    //或者
    var const = res.detile.value
    	db.collection().add({
        data:const
    }).then(res=>{
    consloe.log(res)
        wx.hideloading()
    })
    
    
    
    
    
    console.log(title,author,coontent)
    db.collection().add({
        data:{
            title:"测试",
            author:'李四',
            content:"第三地啊是第几"
        }
    }).then(res=>{
    consloe.log(res)
        wx.hideloading()
    })
    
    
    
更新云数据库操作
const db=ws.cloud.database()

updatedata(){
    db.collection("tetx1").doc("id").update({
data:{
        title:"测试",
        author:'李四',
        content:"第三地啊是第几"
    }
}).then(res=>{
        consloe.log(res)
    })
}
onst db=ws.cloud.database()

updatedata(){
    db.collection("tetx1").where({
        author:222
    }).update({
data:{
        title:"测试",
        author:'李四',
        content:"第三地啊是第几"
    }
}).then(res=>{
        consloe.log(res)
    })
}
更新的set操作(覆盖)
db.collection("tetx1").doc("id").set(
data:{
    title:"idhiasodkla"
    }
).then(res=>{
    consloe.log(res)
})
云数据库删除操作
daldtata(){
    db,collection("tetx1").doc("id").remove().then(res=>{
        console.log(res)
    })
}
catch(e)
异常捕获
获取记录格式
db.collection("tetx1").count().then(res=>{
logsole.log(res)
})
数据库监听
var arrar=[];
db.collection("tetx1").watch({
    onChange:res=>{
        console.log(res)
        this.setdata({
            dataarr:res.data
        })
    },
    onError:err=>{
consloe.log(ree)
    }
})
各项构建查询条件
getdata(){
    db.collection("text1").limit(3).skip(6)orderBy("time","desc").get().then(res=>{
        console.log(res)
    })
}

orderBy()//在某个字段里面查找
//指定查询返回结果时从指定序列后的结果开始返回,常用于分页
field()

方法接受一个必填对象用于指定需返回的字段,对象的各个 key 表示要返回或不要返回的字段,value 传入 true|false(或 1|-1)表示要返回还是不要返回。

db.collection('todos').field({
  description: true,
  done: true,
  progress: true,
})
  .get()
  .then(console.log)
  .catch(console.error)

云函数command

eq
const _ =db.command;
eq//等于某个字段
getdata(){
db.collection("text1").where({
hits:_.eq(666)
}).get().then(res=>{
this.stedata({
datalist:res.data
})
})
}
and lt(最大)
getdata(){
    db.collection("text1").where({
        hits:_.and(_.gt(0),_.li(100))
    }),get().then(res=>{
        this.setdata({
            datalist:res.data
        })
    })
}
get//找出进度大于或等于
const _ = db.command
db.collection('todos').where({
  progress: _.gte(50)
})
.get({
  success: console.log,
  fail: console.error
})
lte//找出进度小于或等于 50 的 todo
const _ = db.command
db.collection('todos').where({
  progress: _.lte(50)
})
.get({
  success: console.log,
  fail: console.error
})

​ 混合使用

hits:_.and(_.get(0),_.lte(100))
or函数
hits:_.or(_.lte(10),_.gte(100))
where(_.or([{
    hits:_.lt(300)
},
     {
         author:_.eq("李四")
}]))
tags函数

找出存在 tags 字段的记录

const _ = db.command
db.collection('todos').where({
  tags: _.exists(true)
})
.get({
  success: console.log,
  fail: console.error
})

size()函数

找出 tags 数组字段长度为 2 的所有记录

const _ = db.command
db.collection('todos').where({
  places: _.size(2)
})
.get({
  success: console.log,
  fail: console.error,
})
enq

查询筛选条件,表示字段不等于某个值。eq 指令接受一个字面量 (literal)

all数组查询操作符。

用于数组字段的查询筛选条件,要求数组字段中包含给定数组的所有元素

const _ = db.command
db.collection('todos').where({
  tags: _.all(['cloud', 'database'])
})
.get({
  success: console.log,
  fail: console.error
})
updata更新字段
db.collection("text1").doc("id").updata({
data:{
    title:'搜索'
}
})。then.(res=>{
    console.log(res)
})
inc

多个用户同时写,对数据库来说都是将字段自增,不会有后来者覆写前者的情况

const _ = db.command
db.collection('todos').doc('todo-id').update({
  data: {
    progress: _.inc(10)//_.inc(-1)
  }
})
remove

更新操作符,用于表示删除某个字段。

把指定字段删除

set(会把原来的老东西覆盖)

更新操作符,用于表示删除某个字段。

db.collection('todos').doc('doc-id').update({
  data: {
    style: {
      color: 'red'
    }
  }
})

// 以下方法更新 style 为 { color: 'red', size: 'large' }
db.collection('todos').doc('doc-id').update({
  data: {
    style: _.set({
      color: 'red',
      size: 'large'
    })
  }
})
更新数组操作符
push//添加新的数据

​ _.push([‘hud’])//里面加的是数组元素(只能添加一个)

pop//删除指定字段的最后一个元素
unshift//添加多个数据
pull//删除字段下指定的元素

​ tabs:_.pull(“shiu1”)

云函数的使用
云函数的初始化

cloud.init()
const db = cloud.database();

云函数入口
//云函数的操作
return await db.colletcion("text1")

//在js的操作
在onload({
    wx.cloud.callFunction({
    name:"getdata",
    data:{
    name:"shi1",
    age:18
}
})
}).then(res=>{
    this.stedata({
consloe.log(res)
    })
})
云函数的入口相关操作
//云函数的操作
var num=event.num;
var page=event.page;
return await db.collection("tetx1").skip(page).limit(num)

//js的操作
getdata(num=0.page)
wx.cloud.callFunction({
name:"tetx1,
data:{
num:5,
page:page
}
"}).then(res=>{
console.log(res)
var olddata=this.data.datalist
var newdata=olddata,coucat(res.result.data);
this.setdata({
datalist:res.result.data	
})
)


onReachBottom:function(){
var page=this.data.datalist.length
this.get(5,page)
},
上传文件
单个图片上传
	wx.chooseImage(

}).then(res=>{

var filepath=res.tem.Filepaths
filepath.forEach(ietem,idx)=>{
    var filename=Data.now+"_"+idx
	this.cloudFile(filepath)
}

})

cloudFile(Filename,path){
    wx.showloading({
        title:"加载中"
    })
    wx.cloud.uploadFile({
        cloudpath:data.now()+".jpg",
        filepath:path
    }).then(res=>{
        this,setdata({
picurl:res.fileid
        })
    }),
    wx.hideloading()
}

//wxml
<image src="{{picurl}}"></image>
多张图片上传
var = UrlArr= []

cloudFile(Filename,path){
    wx.showloading({
        title:"加载中"
    })
    wx.cloud.uploadFile({
        cloudpath:data.now()+".jpg",
        filepath:path
    }).then(res=>{
		urlArr.push(res.fileid)
        if(filepath.lenggh==urlArr.length){
            this.stedata({
                urlArr
            })
        }
        })
    }),
    wx.hideloading()
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐