# 文本中显示空格
使用text标签,设置decode(是否解码)属性为true
<text decode="{{true}}">测试 空格</text>
# 借助云函数获取所有数据库记录
小程序端获取云端数据库记录数量上限为20,云函数上限为100
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
// 先取出集合记录总数
const countResult = await db.collection('test').count()
const total = countResult.total
const MAX_LIMIT = 100
// 计算需分几次取
const batchTimes = Math.ceil(total / MAX_LIMIT)
// 承载所有读操作的 promise 的数组
const tasks = []
for (let i = 0; i < batchTimes; i++) {
const promise = db.collection('test').where({
Garbage: db.RegExp({
regexp: '.*' + event.keyword + '.*',
})
})
.skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
tasks.push(promise)
}
// 等待所有
return (await Promise.all(tasks)).reduce((acc, cur) => {
return {
data: acc.data.concat(cur.data),
errMsg: acc.errMsg,
}
})
}
wx.cloud.callFunction({
name: 'search', //云函数名
data: {
keyword: e.detail.value["keyword"]
},
success: function(res) {
if(res.result.data.length > 0){
}
}
#小程序网络请求
只支持https请求,且域名需要在公众号中设置
可以借助云函数进行http请求,另外,云函数没办法访问本机IP地址,在开发过程中要进行本机接口测试可以开启云函数本地调试
#按钮长按
长按时touchstart事件响应,松开时有时是touchend事件响应,有时是touchcancel响应
#OCR文字识别
使用OCR的通用印刷体打印,(OCR插件暂不支持?)可以调用服务端API,先在微信开放社区-服务平台-接口能力(可搜索要使用的接口)购买(据说使用免费份额也要购买,不然很容易出错)
按照文档可以使用小程序调用和云函数调用,小程序调用看起来麻烦一点,还没研究,使用云函数调用,注意需在 config.json 中配置 ocr.printedText API 的权限
"permissions": {
"openapi": [
"ocr.printedText"
]
}
该API请求参数有两种方式
cloud.openapi.ocr.printedText({
type: 'photo',
imgUrl: 'ENCODE_URL'
})
cloud.openapi.ocr.printedText({
type: 'photo',
img: {
contentType: 'image/png',
value: Buffer
}
}
第二种方式需要用文件buffer,读取手机相册图片获得临时路径后,可以使用FileSystemManager.readFile(Object object) 读取文件内容作为参数buffer,不过很坑的是使用开发工具可以正常运行,但是真机使用时就识别超时或者卡住,查了很久好像是因为图片大小的问题,说是可以通过压缩图片,但是在使用的时候还要控制压缩质量什么的,想想就很麻烦,果断放弃这种方式。
另一种方式不用考虑文件大小的问题,但是由于我后台的接口是http,问题就是如何获得一个图片https链接,最后解决办法是先上传到云存储中,在云存储中可以获得图片https的下载链接(该链接好像具备时效性?不确定,目前开发需求不影响,暂存疑)