2.删3.改4.查limit(10)(组图)
优采云 发布时间: 2021-08-20 21:13
2.删3.改4.查limit(10)(组图)
图像.png
//云函数主体
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext() //获取小程序的信息,如OPENID等
const _ = db.command;
try {
return await db.collection('address').add({
data: {
userid: wxContext.OPENID, //用户唯一id从wxContext获取
name: event.name, //云函数入参从event传入
phone: event.phone,
province: event.province,
city: event.city,
district: event.district,
detail: event.detail,
isdefault: event.isdefault,
createTime:db.serverDate()
},
success: function(res) {
}, fail: err => {
}
})
} catch(e) {}
}
6.上传云功能
写好云函数后,需要上传云函数在小程序中调用
上传云功能
7.调用云功能
wx.cloud.callFunction({
name: 'addcart', //云函数名字
data: {
goodsid: goodsid, //云函数入参
},
success(res) {
console.log(res)
Toast.clear();
},
fail(err) {
Toast.clear();
console.log(err);
wx.showToast({
icon: 'none',
title: '出错啦!请稍后重试'
})
}
})
二、cloud 数据库操作1.new 数据库
新采集
云数据库使用NoSql,表是一个集合
添加一列数据
它会自动生成_id作为主键
2.增
不建议不使用云功能直接在小程序中操作数据库。会有很多限制(比如:查询次数,直接数据库操作的最大次数是20),所以后续的数据库操作都是基于云函数中的。
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database({
env: cloud.DYNAMIC_CURRENT_ENV
})
// 添加商品到购物车
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
try {
return await db.collection('cart').add({ //会默认添加_id字段作为主键
data: {
userid: wxContext.OPENID,
goodsid: event.goodsid,
amount: 1,
selected: true,
createTime:db.serverDate()
},
success: function(res) {
}, fail: err => {
}
})
} catch(e) {
console.log(e);
}
}
2.delete
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database({
env: cloud.DYNAMIC_CURRENT_ENV
})
// 云函数入口函数
exports.main = async (event, context) => {
try {
return await db.collection('address').doc(event._id).remove({ //根据传入的主键删除
success: function(res) {
}, fail: err => {
}
})
} catch(e) {
console.log(e);
}
}
3.改
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database({
env: cloud.DYNAMIC_CURRENT_ENV
})
// 更新收货地址
exports.main = async (event, context) => {
const _ = db.command;
try {
return await db.collection('address').doc(event._id).update({
data: {
name: event.name,
phone: event.phone,
province: event.province,
city: event.city,
district: event.district,
detail: event.detail,
isdefault: event.isdefault,
},
success: function(res) {
}, fail: err => {
}
})
} catch(e) {
console.log(e);
}
}
4.查
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database({
env: cloud.DYNAMIC_CURRENT_ENV
})
// 获取当前用户的地址
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const _ = db.command; //引入查询指令
try {
return await db.collection('address').where({
userid: _.eq(wxContext.OPENID) //eq查询指令 表示等于
}).orderBy('createTime','desc').get() //按时间排序
} catch(e) {
console.log(e);
}
}
limit(10) 表示取前 10 个数据并在 get 之前添加
支持的查询命令
5.多表查询
return await db.collection('cart').aggregate()
.match({
userid: wxContext.OPENID,
selected: true
}).lookup({
from: 'goods', //关联的表名
localField: 'goodsid', //关联表名的字段
foreignField: '_id', //源表的字段
as: 'info' //组装成的对象
}).end()
注意:where()和aggregate()不能共存,where()后面跟get(),aggregate()后面跟end()
6.模糊查询
db.collection('goods').where(_.or([ //or表示接受多个查询条件
{
name: db.RegExp({ //模糊查询
regexp: '.*' + event.name,
options: 'i',
})
},
{
subtitle: db.RegExp({ //组装成正则
regexp: '.*' + event.name, // 正则表达式,字符串形式
options: 'i', //表示忽略大小写
})
}
])).get()
7.page 查询
db.collection('todos').skip(10) //指定查询返回结果时从指定序列后的结果开始返回
.get()
.then(console.log)
.catch(console.error)
三、连接腾讯云短信服务
腾讯短信服务控制台
短信接口
(没想到在控制台找不到api入口)
短信简介
进入接口调试页面
图像.png
在腾讯云控制台找到对应的参数,添加,在线调用成功后直接复制代码
测试时需要在本地安装依赖,右键云函数文件夹->在外部终端窗口打开->运行npm install tencentcloud-sdk-nodejs --save。上传云函数时,仍然可以选择云安装依赖
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const tencentcloud = require("tencentcloud-sdk-nodejs")
// 短信通知下单信息
exports.main = async (event, context) => {
const SmsClient = tencentcloud.sms.v20190711.Client;
const clientConfig = {
credential: { //api的秘钥id和密码 https://console.cloud.tencent.com/cam/capi 中生成
secretId: "",
secretKey: "",
},
region: "",
profile: {
httpProfile: {
endpoint: "sms.tencentcloudapi.com",
},
},
};
const client = new SmsClient(clientConfig);
const params = {
"PhoneNumberSet": [ //发送的号码
"86187xxxxxxxx" //国内的号码需要加 86
],
"TemplateParamSet": [ //发送的参数 对应模板中的{1} {2}
" ",
" "
],
"TemplateID": "xxx", //短信模板ID
"SmsSdkAppid": "xxxx", //SDKAppID 在短信的应用列表中获取 https://console.cloud.tencent.com/smsv2/app-manage
"Sign": "xxx" //短信签名内容 即模板中【】中的内容
};
client.SendSms(params).then(
(data) => {
console.log(data);
return data
},
(err) => {
console.error("error", err);
return err
}
);
}
四、云开发优缺点
优点:使用云功能可以方便的获取用户的OPENID,操作数据库,保存https配置。
缺点:云功能访问速度很慢,不知道5g普及后会不会变
最后,云小程序提供了cms。我还没有使用它。不知道能不能用。