小程序云开发的使用
小程序云开发的概念、云开发前的准备、云函数、云数据库、使用云开发的注意点、云数据的部分相关方法
·
小程序云开发的概念
- 小程序云开发,让前端程序员拥有后端的能力
- 包括
1、云函数(nodejs)
2、云数据库(mogodb)
3、云存储 - 总结
- 前端编写好云函数,上传到云服务器,实现自定义部署,前端去调用云函数,间接通过云函数对数据库的操作,前端—变成全栈
云开发的准备工作
创建feedback数据库
-
先创建集合
-
然后添加记录
-
数据库的记录,是不限字段的,本质上是json格式
云函数
-
右键创建云函数
-
云函数的定义
const cloud = require('wx-server-sdk');
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
});
// 获取openId云函数入口函数
exports.main = async (event, context) => {
// 获取基础信息
const wxContext = cloud.getWXContext();
return {
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
};
};
- 在页面中调用云函数:wx.cloud.callFunction
sendFeed(){
console.log("发表留言");
//执行云函数
wx.cloud.callFunction({
name:"addFeed",
data:{
msg:this.data.msg,//留言信息
userInfo:wx.getStorageSync('userInfo')//用户信息
}
})
.then(res=>{
console.log(res);
this.getFeedback();//获取留言
this.setData({msg:""});//更新留言
})
.catch(err=>{
console.log(err,"err");
})
},
- 在云函数中如何操作云数据
1、初始化:var db = cloud.database();
2、获取:var data = await db.collection(“feedback”).get()
3、添加:var data = await db.collection(“feedback”).add(data:{添加数据})
使用云开发需要注意的点
1、在app.js中定义云函数的id
2、在云函数index.js中定义id
3、云id来自云开发–概览–环境id
4、右键选择环境
5、上传并部署
6、文件发生改变时,右键增量上传
补充
云数据的部分相关方法
插入数据
db.collection('todos').add({
// data 字段表示需新增的 JSON 数据
data: {
// _id: 'todo-identifiant-aleatoire', // 可选自定义 _id,在此处场景下用数据库自动分配的就可以了
description: "learn cloud database",
due: new Date("2018-09-01"),
tags: [
"cloud",
"database"
],
// 为待办事项添加一个地理位置(113°E,23°N)
location: new db.Geo.Point(113, 23),
done: false
},
success: function(res) {
// res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
console.log(res)
}
})
查询数据
[
{
_id: 'todo-identifiant-aleatoire',
_openid: 'user-open-id', // 假设用户的 openid 为 user-open-id
description: "learn cloud database",
due: Date("2018-09-01"),
progress: 20,
tags: [
"cloud",
"database"
],
style: {
color: 'white',
size: 'large'
},
location: Point(113.33, 23.33), // 113.33°E,23.33°N
done: false
},
{
_id: 'todo-identifiant-aleatoire-2',
_openid: 'user-open-id', // 假设用户的 openid 为 user-open-id
description: "write a novel",
due: Date("2018-12-25"),
progress: 50,
tags: [
"writing"
],
style: {
color: 'yellow',
size: 'normal'
},
location: Point(113.22, 23.22), // 113.22°E,23.22°N
done: false
}
// more...
]
更新
db.collection('todos').doc('todo-identifiant-aleatoire').update({
// data 传入需要局部更新的数据
data: {
// 表示将 done 字段置为 true
done: true
},
success: function(res) {
console.log(res.data)
}
})
删除数据
db.collection('todos').doc('todo-identifiant-aleatoire').remove({
success: function(res) {
console.log(res.data)
}
})
排序、分页、搜索查询的api
排序
- orderBy:Collection.orderBy(fieldPath: string, string: order): Collection
- 示例:(按一个字段排序)
db.collection('todos').orderBy('progress', 'asc')
.get()
.then(console.log)
.catch(console.error)
分页
- limit:Collection.limit(value: number): Collection
db.collection('todos').skip(10)
.get()
.then(console.log)
.catch(console.error)
- skip:Collection.skip(offset: number): Collection
db.collection('todos').limit(10)
.get()
.then(console.log)
.catch(console.error)
查询参数
- where:Collection.where(condition: Object): Collection
- 示例
const _ = db.command
const result = await db.collection('todos').where({
price: _.lt(100)
}).get()
具体请参考官网
云上传的api
- wx.cloud.uploadFile
- 示例:
const cloud = require('wx-server-sdk')
const fs = require('fs')
const path = require('path')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
exports.main = async (event, context) => {
const fileStream = fs.createReadStream(path.join(__dirname, 'demo.jpg'))
return await cloud.uploadFile({
cloudPath: 'demo.jpg',
fileContent: fileStream,
})
}
更多推荐
已为社区贡献3条内容
所有评论(0)