- 云开发数据库查询条件where中_.in以数组为查询关键字后,不能模糊查询?
使用_.in 以数组中的所有字段为关键字,对数据库进行查询,但是不能使用正则表达式进行模糊查询,尝试通过for循环,将数组中的每一个字段单独模糊查询后,再将每一次查询结果进行拼接汇总后输出,但是又遇到for循环里有向数据库发起查询请求的异步申请,而导致最后的查询返回结果的数组拼接有问题。请教各位大神,应该怎么解决这个问题啊? for (let index = 0; index < resKeyWord.length; index++) { console.log('当前的keyWord是:',resKeyWord[index]) const legalTerms = db.collection('legalTerms').where({ keyWord:{ $regex:'.*'+ resKeyWord[index], $options: 'i' } }).orderBy('checkNO', 'desc') .get({ success(res) { console.log('当前数组查询的返回值是:',res.data) oldTest = oldTest.concat(res.data) console.log('oldTest:',oldTest) } }) } console.log('oldTest:',oldTest) 最后一行打印出的oldTest是空的,意味着for循环还没有执行完,就执行了最后一行的打印了,尝试了各种方法,都解决不了,感谢各位支招。 或者有没有什么方法直接支持对resKeyWord这个数组对每一个字段进行模糊查询?
2023-04-03 - 数据库查询_.in不支持对数组中每个元素的模糊查询?怎么办
云开发数据库,已包含多个字符串的数组为关键字,对数据库数据进行检索,使用了 db.collection('legalTerms').where({ category: _.in(queryConten) }) for (let index = 0; index < resKeyWord.length; index++) { console.log('当前的keyWord是:',resKeyWord[index]) const legalTerms = db.collection('legalTerms').where({ keyWord:{ $regex:'.*'+ resKeyWord[index], $options: 'i' } }).orderBy('checkNO', 'desc') .get({ success(res) { console.log('当前数组查询的返回值是:',res.data) oldTest = oldTest.concat(res.data) console.log('oldTest:',oldTest) } }) } queryConten是一个数组,但是想实现的是,将数组中的每一个字符串都进行模糊查询,好像_.in没有这个功能,应该怎么办啊? 我现在想到的是使用for循环对数组每一个元素进行模糊检索,再将每一次检索结果拼接,最后输出,但是中间又发生了for循环中有异步请求,导致拼接结果不完整的问题。 请各位大神支招
2023-04-03 - 云函数调用“office-to-pdf”库,本地调试成功,但真机调试失败?
云函数调用“office-to-pdf”库,将word的buffer转换成PDF文件,本地调试成功,但真机调试失败,真机调试因为不能看到云函数的本地调试打印,只能看到真机调试时的打印报错如下: message: "errCode: -401003 api parameter type error | errMsg: parameter.fileID should be string instead of undefined;", errCode: -401003, errMsg: "parameter.fileID should be string instead of undefined;", requestID: , line: 1, …} 调用云函数的js片段如下: imageToDocx(){ wx.showLoading({ title: '加载中', }) wx.cloud.callFunction({ // 云函数名称 name: 'imageToDocx', // 传给云函数的参数 data: { downloadFileID: this.data.downloadFileID, //CDN当事人签字图片 signPathLitigantURL: wx.cloud.CDN({ type: 'filePath', filePath: this.data.signPathLitigant, // 临时文件的路径 }), //CDN执法人员签字图片 signPathOfficersURL: wx.cloud.CDN({ type: 'filePath', filePath: this.data.signPathOfficers, // 临时文件的路径 }), sealURL: this.data.sealURL }, }) .then(res => { console.log('云存储文件的ID是:',res) wx.cloud.downloadFile({ fileID: res.result.fileID, success: res => { // 返回并存储临时文件路径 console.log('下载PDF路径:',res.tempFilePath) this.setData({ exportTempFilePath: res.tempFilePath }) wx.openDocument({ filePath: res.tempFilePath, showMenu: 'true', success: function (res) { console.log('打开文档成功') wx.hideLoading() } }) }, fail: console.error }) }) .catch(res=> { console.log('执行出错:',res) wx.hideLoading() if (this.data.previewTempFilePath=='') { var showModalContent = '未生成预览文书' } else { if (typeof(this.data.signPathLitigant)=='undefined' || typeof(this.data.signPathOfficers)=='undefined') { var showModalContent = '未生成手写签名' } else { var showModalContent = '未知错误' } } console.log(showModalContent) wx.showModal({ title: '导出失败', showCancel: false, content: showModalContent, success (res) { } }) }) }, 这里再把云函数的代码粘贴如下: // 云函数入口文件 const cloud = require('wx-server-sdk') const { createReport } = require('docx-templates') const fs = require('fs') const path = require('path') const dayjs = require('dayjs') const axios = require("axios") const toPdf = require('office-to-pdf') cloud.init({ env: 'cloud1-7g1pdoii23b288bf' }) // 云函数入口函数 exports.main = async (event, context) => { console.log(event) const res = await cloud.downloadFile({ fileID: event.downloadFileID, }) const template = res.fileContent console.log('当前下载读取文件成功') //导入当事人签字图片并转码 let signBuffer1 = await axios({ method: 'get', url: event.signPathLitigantURL, responseType: 'arraybuffer', }) const signPathLitigant64 = new Buffer.from(signBuffer1.data, 'binary').toString('base64') //导入执法人员签字图片并转码 let signBuffer2 = await axios({ method: 'get', url: event.signPathOfficersURL, responseType: 'arraybuffer', headers: { "Content-Type": "*" } }) const signPathOfficer64 = new Buffer.from(signBuffer2.data, 'binary').toString('base64') //导入印章图片并转码 let signBuffer3 = await axios({ method: 'get', url: event.sealURL, responseType: 'arraybuffer', headers: { "Content-Type": "*" } }) const seal64 = new Buffer.from(signBuffer3.data, 'binary').toString('base64') //开始编译插入 const wordBuffer = await createReport({ template, data: { //变量 }, additionalJsContext: { getMapPicture1: async () => { const res = signPathLitigant64; return { width: 3, height: 1.6875, data: res, extension: '.png', layout: 'Text wrapping' }; }, getMapPicture2: async () => { const res = signPathOfficer64; return { width: 3, height: 1.6875, data: res, extension: '.png' }; }, getMapPicture3: async () => { const res = seal64; return { width: 4, height: 4, data: res, extension: '.png', layout: 'Text wrapping' }; }, }, cmdDelimiter: ['+', '+'] //以+作为变量分隔符 }) const preDir = dayjs().format("YYYYMMDD");//日期 console.log('当前的日期是',preDir) const stringRandom = require('string-random') const randfilename = stringRandom(32)//随机文件名 const cloudPath = `${preDir}/${randfilename}.pdf`//文件 console.log('当前云路径是',cloudPath) //开始生成PDF文件 try { const pdfBuffer = await toPdf(wordBuffer) console.log('PDF生成成功') //上传云存储 return await cloud.uploadFile({ cloudPath: cloudPath, fileContent: Buffer.from(pdfBuffer, 'base64') }) } catch (error) { return error } } 我的分析是因为云函数中间发生问题,导致没有返回云存储的PDF文件的fileID,所以这样报错,但是因为真机调试时看不到云函数执行中的打印,所以确实找不到问题在哪里,请各位大神指点,在线等,感谢!!!
2022-11-23 - 小程序怎么实现word转PDF?
请教各位大神,小程序怎么在云函数中实现word转pdf? 我尝试用了libreoffice-convert这个库,但是总是有问题,又不知道问题在哪里,把代码贴出来,请各位指教。 或者还有没有其他的方法啊? 感谢各位指点! // 云函数入口文件 const cloud = require('wx-server-sdk') const { createReport } = require('docx-templates') const fs = require('fs') const path = require('path') const dayjs = require('dayjs') const axios = require("axios") const libre = require('libreoffice-convert') libre.convertAsync = require('util').promisify(libre.convert) cloud.init({ env: 'cloud1-7g1pdoii23b288bf' }) // 云函数入口函数 exports.main = async (event, context) => { console.log(event) const res = await cloud.downloadFile({ fileID: event.downloadFileID, }) const template = res.fileContent console.log('当前下载读取文件成功') //导入当事人签字图片并转码 let signBuffer1 = await axios({ method: 'get', url: event.signPathLitigantURL, responseType: 'arraybuffer', }) const signPathLitigant64 = new Buffer.from(signBuffer1.data, 'binary').toString('base64') //导入执法人员签字图片并转码 let signBuffer2 = await axios({ method: 'get', url: event.signPathOfficersURL, responseType: 'arraybuffer', headers: { "Content-Type": "*" } }) const signPathOfficer64 = new Buffer.from(signBuffer2.data, 'binary').toString('base64') //导入印章图片并转码 let signBuffer3 = await axios({ method: 'get', url: event.sealURL, responseType: 'arraybuffer', headers: { "Content-Type": "*" } }) const seal64 = new Buffer.from(signBuffer3.data, 'binary').toString('base64') //开始编译插入 const buffer = await createReport({ template, data: { //变量 }, additionalJsContext: { getMapPicture1: async () => { const res = signPathLitigant64; return { width: 3, height: 1.6875, data: res, extension: '.png' }; }, getMapPicture2: async () => { const res = signPathOfficer64; return { width: 3, height: 1.6875, data: res, extension: '.png' }; }, getMapPicture3: async () => { const res = seal64; return { width: 4, height: 4, data: res, extension: '.png' }; }, }, cmdDelimiter: ['+', '+'] //以{}作为变量分隔符 }) //开始转换PDF const ext = '.pdf' const pdfBuf = await libre.convertAsync(buffer, ext, undefined); console.log('pdfBuf:',pdfBuf) const preDir = dayjs().format("YYYYMMDD");//日期 console.log('当前的日期是',preDir) const stringRandom = require('string-random') const randfilename = stringRandom(32)//随机文件名 const cloudPath = `${preDir}/${randfilename}.pdf`//文件 console.log('当前云路径是',cloudPath) return await cloud.uploadFile({ cloudPath: cloudPath, fileContent: pdfBuf }) }
2022-11-21 - 云函数安装部署canvas后,运行报错canvas.node: invalid ELF heade?
云函数安装部署完canvas 安装没有发生问题,一切正常 [图片] 但是调用云函数后,一直报错,错误代码如下: [图片] 实在不知道怎么办了,请各位大神指点!!!!感激不尽! 同时提供云函数的源码,源码其实不完整,主要是想运行看看,不知道是源码的问题,还是canvas包安装的问题? // 云函数入口文件 const cloud = require('wx-server-sdk') const { createCanvas, loadImage } = require('canvas') cloud.init({ env: 'cloud1-7g1pdoii23b288bf' }) // 云函数入口函数 exports.main = async (event, context) => { console.log(event) //开始绘制-------------------------------------------------------------------- const canvas = createCanvas(400, 400) const ctx = canvas.getContext('2d') // Canvas 画布的实际绘制宽高 const renderWidth = 400 const renderHeight = 400 // 绘制前清空画布 ctx.clearRect(0, 0, renderWidth, renderHeight) // 绘制印章边框 var width = renderWidth/2 var height = renderHeight/2 console.log('width:',width) console.log('height:',height) ctx.lineWidth=2 ctx.strokeStyle="#f00" ctx.arc(width,height,78,0,Math.PI*2); ctx.stroke() //画五角星 create5star(ctx,width,height,25,"#f00",0); // 绘制印章单位 var company = event.seal console.log('company:',company) ctx.translate(width,height);// 平移到此位置, ctx.font = '20px NSimSun' ctx.fillStyle="#f00"; var count = company.length;// 字数 console.log('字数:',count) var angle = 4*Math.PI/(3*(count - 1));// 字间角度 var chars = company.split(""); var c; // ctx.transform(1,0,0,0,0,0) for (var i = 0; i < count; i++){ c = chars[i];// 需要绘制的字符 if(i==0) ctx.rotate(5*Math.PI/6); else ctx.rotate(angle); ctx.save(); ctx.translate(60, 0);// 平移到此位置,此时字和x轴垂直 ctx.rotate(Math.PI/2);// 旋转90度,让字平行于x轴 ctx.fillText(c,-10, 5);// 此点为字的中心点 ctx.restore(); } console.log('绘制结束') //绘制五角星 function create5star(ctx,sx,sy,radius,color,rotato){ ctx.save(); ctx.fillStyle=color; ctx.translate(sx,sy);//移动坐标原点 ctx.rotate(Math.PI+rotato);//旋转 ctx.beginPath();//创建路径 var x = Math.sin(0); var y= Math.cos(0); var dig = Math.PI/5 *4; for(var i = 0;i< 5;i++){//画五角星的五条边 var x = Math.sin(i*dig); var y = Math.cos(i*dig); ctx.lineTo(x*radius,y*radius); } ctx.closePath(); ctx.stroke(); ctx.fill(); ctx.restore(); } //绘制结束------------------------------------------------- return { } }
2022-09-29 - 小程序中如何根据输入的文字内容生成一个印章图片?
请问各位老师,如何在小程序中根据输入的文字内容生成一个印章的图片,是不是用canvas?具体怎么写程序,我看了开放文档也不晓得怎么操作啊?
2022-09-28 - 云开发数据库中内容管理(CMS)有2个数据一直排在最前?
云开发数据库开通了内容管理,内容集合按照添加时间排序,但是发现有2个记录一直自动排在最前,尽管添加时间是在后面去了,就算有新添加的依然排在最前,就像被无形置顶了一样,请问这种情况怎么办?
2022-03-15 - wx.cloud.downloadFile从云存储下载文件文件名不一致的问题?
用wx.cloud.downloadFile从云存储下载文件,但是下载并打开后都是一个临时文件的文件名,跟原来在云存储的文件名不一致,想让下载并打开的文件和原云存储的文件名保持一致,请各位老师赐教,感谢!! 附下载文件并打开的代码,仅用于打开云存储中的word文件 wx.cloud.downloadFile({ fileID: res.result.fileID, success: res => { // 返回临时文件路径 console.log('临时文件的路径是:',res.tempFilePath) wx.openDocument({ filePath: res.tempFilePath, showMenu: 'true', success: function (res) { console.log('打开文档成功') wx.hideLoading() } }) }, fail: console.error })
2022-01-26 - wx:for使用的问题,渲染不出?
使用wx:for渲染一直不成功,不知道什么原因,请各位老师指点,感谢!!!! <block wx:for="{{coercive}}" wx:key="key"> <!-- idx:"",name:"",model:"",unit:"",quantity:"",remark: --> <view class="section__title">编号:{{item.idx}}</view> <view class="section__title">标称名称/场所:{{item.name}}</view> <view class="section__title">规格(型号)/场所地址:{{item.model}}</view> <view class="section__title">单位:{{item.unit}}</view> <view class="section__title">数量:{{item.quantity}}</view> <view class="section__title">备注:{{item.remark}}</view> </block> coercive数组的内容如下:coercive: Array(2) 0: {idx: "", name: "", model: "阿斯蒂芬", unit: "阿斯蒂芬斯蒂芬", quantity: "阿斯蒂芬", …} 1: {name: "撒旦法", model: "撒旦法", unit: "撒旦法", quantity: "撒旦法", remark: "", …}
2022-01-26 - 为什么小程序自带的ocr插件识别营业执照识别不了?
小程序中引用了自带的ocr 识别营业执照 的插件, 但是识别的时候只能通过拍照后识别照片,不能直接,如果直接识别的话,总是失败。 这个是bug 吗?
2022-01-18