1.建立一个云开发项目(需要填写正式的APPID 测试号不可以云开发)
云数据库(开通即可享用免费额度)
个人使用一般够用
如何在控制台中创建数据库集合、往集合上插入数据、以及在控制台中查看刚刚插入的数据。
创建第一个集合
打开控制台,选择 “数据库” 标签页,通过 “添加集合” 入口创建一个集合。假设我们要创建一个待办事项小程序,我们创建一个名为 todos
的集合。创建成功后,可以看到 todos
集合管理界面,界面中我们可以添加记录、查找记录、管理索引和管理权限。
创建第一条记录
控制台提供了可视化添加数据的交互界面,点击 “添加记录” 添加我们的第一条待办事项:
添加完成后可在控制台中查看到刚添加的数据。
2.云数据库的增删查改
2.1云数据库的查
db.collection('集合名').doc('记录的id').get({
success: function(res) {
// res.data 包含该记录的数据
console.log(res.data)
}
})
2.1.1where的使用
let that = this
db.collection('user').where({
name:'hh'
}).get({
success:function(res){
console.log('获取数据成功',res)
that.setData({
data:res.data
})
console.log(that.data.data)
},fail:function(res){
console.log('获取数据失败',res)
}
})
2.2云数据库的改
db.collection('user').doc('记录的id').update({
data: {
name: "nn"
},
success:function(res){
console.log('更新数据成功',res)
console.log(that.data.data)
},fail:function(res){
console.log('更新数据失败',res)
}
})
2.3云数据库的增
let that = this
console.log(e)
db.collection('user').add({
data:{
name:e.detail.value.name,
age:e.detail.value.age,
},success:function(res){
console.log('添加数据成功',res)
},fail:function(res){
console.log('添加数据失败',res)
}
})
2.4云数据库的删
db.collection('todos').doc('todo-identifiant-aleatoire').remove({
success: function(res) {
console.log(res.data)
}
})
如果需要更新多个数据,需在 Server 端进行操作(云函数)。
// 使用了 async await 语法
const cloud = require('wx-server-sdk')
const db = cloud.database()
const _ = db.command
exports.main = async (event, context) => {
try {
return await db.collection('todos').where({
done: true
}).remove()
} catch(e) {
console.error(e)
}
}
3.云储存的使用
2.1上传文件
在小程序端可调用 wx.cloud.uploadFile
方法进行上传:
wx.cloud.uploadFile({
cloudPath: 'example.png', // 上传至云端的路径
filePath: '', // 小程序临时文件路径
success: res => {
// 返回文件 ID
console.log(res.fileID)
},
fail: console.error
})
上传成功后会获得文件唯一标识符,即文件 ID,后续操作都基于文件 ID 而不是 URL。
2.2下载文件
可以根据文件 ID 下载文件,用户仅可下载其有访问权限的文件:
wx.cloud.downloadFile({
fileID: '', // 文件 ID
success: res => {
// 返回临时文件路径
console.log(res.tempFilePath)
},
fail: console.error
})
2.3删除文件
可以通过 wx.cloud.deleteFile
删除文件:
wx.cloud.deleteFile({
fileList: ['a7xzcb'],
success: res => {
// handle success
console.log(res.fileList)
},
fail: console.error
})
更详细的 API 可参考小程序端及后端存储 API 文件。
2.4换取临时链接
可以根据文件 ID 换取临时文件网络链接,文件链接有有效期为两个小时:
wx.cloud.getTempFileURL({
fileList: ['cloud://xxx.png'],
success: res => {
// fileList 是一个有如下结构的对象数组
// [{
// fileID: 'cloud://xxx.png', // 文件 ID
// tempFileURL: '', // 临时文件网络链接
// maxAge: 120 * 60 * 1000, // 有效期
// }]
console.log(res.fileList)
},
fail: console.error
})
4.云函数
云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。
小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内使用 wx-server-sdk 提供的 getWXContext 方法获取到每次调用的上下文(appid、openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。
4.1安装nodejs
http://nodejs.cn/download/
4.2在终端使用npm安装包
npm install --save wx-server-sdk@latest
4.3云函数的创建及调用
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env:"数据库的环境id"
})
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
let that = this
wx.cloud.callFunction({
name:"getopenid",
data:{
},
success:function(res){
console.log('调取函数成功',res)
that.setData({
aa:res.result.openid
})
},fail:function(res){
console.log('调用函数失败',res)
}
})
4.4云函数的传值并调用
const cloud = require('wx-server-sdk')
cloud.init({
env: '数据库的环境id'
})
const db = cloud.database()
exports.main = async (event, context) => {
// collection 上的 get 方法会返回一个 Promise,因此云函数会在数据库异步取完数据后返回结果
return db.collection('数据库的集合名').where({
name:event.name
}).get()
}
wx.cloud.callFunction({
name:"getdata",
data:{
name:"pp"
},
success:function(res){
console.log('数据库获取调取成功',res)
},fail:function(res){
console.log('数据库获取调用失败',res)
}
})