我是靠谱客的博主 想人陪面包,最近开发中收集的这篇文章主要介绍微信小程序云开发学习笔记No.01,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

云开发API:
①数据库API(①小程序端API;②服务端API;)②HTTP API

云能力初始化

app.js

App({
	onLaunch() {//小程序生命周期函数onLaunch,小程序启动时会调用它
		wx.cloud.init({
			env: '你的环境ID',
			traceUser: true//在用户管理中 记录用户对云资源的访问
		})
	
	}
})

数据库的引用

const db = wx.cloud.database() //获取默认环境的数据库的引用

可以有选择地其他环境数据

const db = wx.cloud.database({
	env: '环境ID'
})

获取数据库中的目标数据的引用

const db = wx.cloud.database('test')//获取数据库中test集合的引用

const sb = wx.cloud.database('test').doc('abc')//获取test集合中ID为abc的记录的引用

在集合中插入数据

回调风格

//在集合对象test调用add方法
const db = wx.cloud.database()

db.collection('test').add({
	data: {
		_id: '01',
		name: "lyh",
		due: new Data('20xx-0x-0x'),//new Data()获取客户端时间
		/*due: db.serverData()//获取服务器时间(准确时间)*/
		tags:[
			"papaer"
		],
		location: new db.Geo.Point(113, 23),//db.Geo.point(东经,北纬)
		done: false
	},
	success: fuction(res) {//操作成功 小程序会自动调用success函数,并传入一个res值
		console.log(res)
	},
	fail: fuction(res) {//操作失败 同上
		console.log(res)//res中errcode 字段表示错误码, errMsg 字段表示错误信息
	},
	complete: fuction(res) {
		console.log(res)//res 同success或fail中res
	}
})

promise风格

db.collection('test').add({
	data: {
		_id: '01',
		name: "lyh",
		due: new Data('20xx-0x-0x'),//new Data()获取客户端时间
		/*due: db.serverData()//获取服务器时间(准确时间)*/
		tags:[
			"papaer"
		],
		location: new db.Geo.Point(113, 23),//db.Geo.point(东经,北纬)
		done: false
	}
}).then(res => {//箭头函数语法 相当于success
	console.log(res)
}).catch(res => {
	console.log(res)
})

两种风格不能混用


查询数据

在集合和记录对象上都有一个get方法,可获得单个记录或集合中多个记录的数据

//记录
db.collection('test').doc('id-1').get({//id-1时某个id的值
	success: fuction(res) {
		//res.data 包含集合中ID为id-1的记录的数据
		console.log(res.data)
	}
})
//集合
db.collection('test').get({
	success: fuction(res) {
	//res.data 是一个包含集合有权限访问的所有记录的数据
		console.log(res.data)
	
})

分页查询

由于服务器默认一次最多传回20条记录
云端调用该API函数时,服务器默认一次最多传回100条记录

Page({
	data: {
		pageData: [],//已经获取的分页数据,通常会在视图层用wx:for列表渲染该数据
		nextPage: 0//下拉触底时,应该获取上一页的数据的页码,从0开始
	},
	onLoad() {
		this.getNextPageData()//进入页面时 立即获取第0页数据
	},
	onReachBottom() {
		this.getNextPageData()//下拉触底时 获取下一页的数据
	},
	getNextPageData() {
		const PAGE_COUNT = 20//用常量表示每一页显示的数据的数量
		const db = wx.cloud.database()//引用数据库
	
		db.collection().count.then(res => {//获取集合中的记录的数量
			const tatalCount = res.total
			const totalPages = Math.ceil(totalCount/PAGE_COUNT)//向上取整

			if(this.data.nextPage < totalPages) {
				db.collection('todos')
					.skip(this.data.nextPage * PAGE_COUNT)//跳过已获取的数据
					.limit(PAGE_COUNT)//获取新的20条数据
					.get().then(res2 =>{//
						//将已有的pageData与新获得的20条数据合并成一个新的数组
						const pageData = this.data.pageData.concat(res2, data)//合并数据
						this.setData({
							pageData,//将合并后的数据更新到data对象中
							nextPage: this.data.nextPage + 1 //更新nextPage为下一页
						})
					})
			} else {
				console.log('no more data') //数据已经全部加载完毕
			}
		})
	}
})

回调风格时注意this要提前记录


条件查询

集合引用上使用where方法指定查询条件

db.collection('todos').where({
	_openid: 'user-open-id',
	done: false
}).get().then(res=> {
	console.log(res.data)
})

db.command中提供的查询指令

指令说明
eq等于
neq不等于
lt小于
lte不大于
gt大于
gte不小于
in字段值在给定数组中
nin字段值不在给定数组中
and条件与 表示需同时满足另一条件(逻辑指令)
or条件或 表示满足任何一个条件
//20~80 .and()
db.collection('todos').where{(
	progress: db.command.gte(20).and(db.command.lte(80))//progress data中定义的一个
}).get().then(res => {
	console.log(res.data)
})
//db.command.or([{},{}])
db.collection('todos').where(db.command.or([
	{
		progress: db.command.lt(50)
	},
	{
		due: db.command.gt(new Data())//日期是今日之后
	}
])).get().then()(res => {
	console.log(res.data)
})

查询数组和对象

1、匹配集合中的嵌套字段
eg:假设集合中有如下两记录:

[
	{
		"style": {
				"color": "red"
		}
	},
	{
		"style": {
				"color": "blue"
		}
	} 
]

查询:

//法一:传入相同结构的对象作为查询条件
db.collection().where({
	style: {
		color: 'blue'
	}
}).get()
//法二:点表示法
db.collection().where({
	'style.color': 'blue'//点表示法 对象的属性必须用引号引起来
}).get()

2、匹配数组
假设集合中有如下一个记录

{
	"data": [1, 2, 3]
}
db.colloction('todos').where({
	data: [1, 2, 3]	
}).get()

3、匹配数组中的元素

db.collection('todos').where({
	data: 2
}).get()

4、匹配数组第n项元素

db.collection('todos').where({
	'data.1': 2//'字段名.n': key
}) 

5、匹配多重嵌套的数组和对象
假设集合中有如下一个记录

{
	"test": {
		"objects": [
			{
				"data": [1, 2, 3]
			},
			{
				"data": [4, 5, 6]
			},
		]
	}
}
db.collection('todos').where({
	'test.objects.0.data.2': 3
}).get()

最后

以上就是想人陪面包为你收集整理的微信小程序云开发学习笔记No.01的全部内容,希望文章能够帮你解决微信小程序云开发学习笔记No.01所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部