- 云函数数据库语句能否拼装?
由于权限和一次读取数限制等原因,云函数操作数据库的优势不言而喻。 但由于删改查修各种需求,加上还有指定字段、排序等参数,在数据库语句不能灵活拼装的情况下,我们要根据各种数据库操作需求,建很多云函数,非常不方便管理。 我希望有方法可以灵活拼装云函数,即根据event传参,决定是get还是add。是否加字段、是否排序等等。 有办法实现吗?请各位指教。 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const _ = db.command exports.main = async (event, context) => { try { return await db.collection(event.collection).where(event.where).get(event.get) } catch (e) { return e } }
2020-07-26 - dialog+textarea键盘拉起上推不同步导致textarea错位的bug?
存在问题,textarea拉起键盘时,textarea跟随页面上推,但dialog不跟随上推,导致textarea错位。是否有解决方案?请指教,谢谢。 [图片] WXML: <!-- 新增需求对话框 --> <view wx:if="{{currentDialog=='newRequest'}}"> <view class="weui-mask"></view> <view class="weui-dialog margin-lr-sm width-auto"> <view class="weui-dialog__hd"><strong class="weui-dialog__title">新增支撑需求</strong></view> <view class="weui-dialog__bd padding-0 margin-bottom-sm"> <view class="text-left margin-bottom"> <view class="weui-cells__group weui-cells__group_form"> <view class="weui-cells__title flex justify-between"><text>类别</text><text bindtap="bindRequestTypeTips" class='cuIcon-info text-green'></text></view> <view class="weui-cells weui-cells_form"> <view class="weui-cell weui-cell_active weui-cell_select"> <view class="weui-cell__bd"> <picker bindchange="bindPickerChange" range="{{arrRequestType}}" data-target="RequestType"> <view class="weui-select">{{arrRequestType[selectedRequestType]}}</view> </picker> </view> </view> </view> </view> </view> <view class="text-left"> <view class="weui-cells__group weui-cells__group_form"> <view class="weui-cells__title">描述</view> <view class="weui-cells weui-cells_form"> <view class="weui-cell"> <view class="weui-cell__bd"> <textarea class="weui-textarea" placeholder="请描述你的支撑需求" auto-height cursor-spacing="5" maxlength="120" bindinput="bindNewRequestInputChange" data-target="newRequestInput"></textarea> <view class="weui-textarea-counter"><text>{{newRequestInputLength}}</text>/120</view> </view> </view> </view> </view> </view> </view> <view class="weui-dialog__ft"> <a class="weui-dialog__btn weui-dialog__btn_default" bindtap="bindDialogChange" data-target="null">取消</a> <a class="weui-dialog__btn weui-dialog__btn_primary {{isNewRequesting?'text-gray':'text-green'}}" bindtap="bindNewRequest"><i wx:if="{{isNewRequesting}}" class="weui-loading"></i>新增</a> </view> </view> </view>
2020-07-26 - dialog+textarea的bug?
dialog+textarea翻车现场。 存在问题,textarea拉起键盘时,textarea跟随页面上推,但dialog不跟随上推,导致textarea错位。是否有解决方案?请指教,谢谢。 [图片] WXML: <!-- 新增需求对话框 --> <view wx:if="{{currentDialog=='newRequest'}}"> <view class="weui-mask"></view> <view class="weui-dialog margin-lr-sm width-auto"> <view class="weui-dialog__hd"><strong class="weui-dialog__title">新增支撑需求</strong></view> <view class="weui-dialog__bd padding-0 margin-bottom-sm"> <view class="text-left margin-bottom"> <view class="weui-cells__group weui-cells__group_form"> <view class="weui-cells__title flex justify-between"><text>类别</text><text bindtap="bindRequestTypeTips" class='cuIcon-info text-green'></text></view> <view class="weui-cells weui-cells_form"> <view class="weui-cell weui-cell_active weui-cell_select"> <view class="weui-cell__bd"> <picker bindchange="bindPickerChange" range="{{arrRequestType}}" data-target="RequestType"> <view class="weui-select">{{arrRequestType[selectedRequestType]}}</view> </picker> </view> </view> </view> </view> </view> <view class="text-left"> <view class="weui-cells__group weui-cells__group_form"> <view class="weui-cells__title">描述</view> <view class="weui-cells weui-cells_form"> <view class="weui-cell"> <view class="weui-cell__bd"> <textarea class="weui-textarea" placeholder="请描述你的支撑需求" auto-height cursor-spacing="5" maxlength="120" bindinput="bindNewRequestInputChange" data-target="newRequestInput"></textarea> <view class="weui-textarea-counter"><text>{{newRequestInputLength}}</text>/120</view> </view> </view> </view> </view> </view> </view> <view class="weui-dialog__ft"> <a class="weui-dialog__btn weui-dialog__btn_default" bindtap="bindDialogChange" data-target="null">取消</a> <a class="weui-dialog__btn weui-dialog__btn_primary {{isNewRequesting?'text-gray':'text-green'}}" bindtap="bindNewRequest"><i wx:if="{{isNewRequesting}}" class="weui-loading"></i>新增</a> </view> </view> </view>
2020-07-25 - 如何实现多条件渲染?
我有一个view,我希望实现多条件渲染。 首先data是这样的: data:{ isNice:true, isBad:true } WXML是这样的: <text class="{{isBad?'bg-gray':'bg-cyan'}}">打开冰箱放入大象</text> 以上只是单条件判断,我希望实现的是: 第一条件:如果isBad为true则一律输出bg-gray 否则(即isBad为false)第二条件:如果isNice为true输出bg-green,否则输出bg-cyan 这样可以实现吗?请指教,谢谢。
2020-07-25 - JS对象结构转换的问题?
我有一个数组对象,结构大概是这样的: resultData: [{ createTime: 1595550263618, request: 'joo', requestType: '信息查询' }, { createTime: 1595380268698, request: 'tom', requestType: '工单处理' }, { createTime: 1595680264638, request: 'luxi', requestType: '信息查询' }] 里面有个时间戳,我希望通过时间戳,将数组对象结构变成这样: resultData: [{ year: 2020, monthDay: '7月24日', content: [{ createTime: 1595550263618, time: '10:32', request: 'joo', requestType: '信息查询' }, { createTime: 1595380268698, time: '12:13', request: 'tom', requestType: '工单处理' }, { createTime: 1595680264638, time: '11:28', request: 'luxi', requestType: '信息查询' }] }] 通过getFullYear()、getMonth()等获得年月日和时分这些都没问题,就是结构怎么转换,没有思路,求指教。 注意,数组对象的length和内容都不是固定的,应该要用for循环转换。求指教。
2020-07-25 - JS等待执行的问题?
问一个比较低级的问题,一个云函数,用于获取服务器时间,在后面的代码继续中要用到服务器时间。 云函数是这样的: const cloud = require('wx-server-sdk') cloud.init() exports.main = async (event, context) => { const date = new Date().getTime(); return date } 调用是这样的: let serverTime wx.cloud.callFunction({ name: 'getTime', success: res => { console.log(new Date(res.result)) //赋值 serverTime=res.result }, fail: res => { console.error } }) //实际上我希望在这里使用serverTime。 console.log(serverTime) 实际上我不想把后续代码嵌套到云函数的success回调中,这样代码可读性差,不利于维护。 问题是我如何等待云函数返回,再执行console.log(serverTime)。 我尝试去研究了一下async/await,但未解决,当然setTimeout这种不科学的方法也是不可取的。 麻烦大哥帮忙改一下代码,谢谢。
2020-07-23 - 前端调用云函数,data中如何引用服务器时间?
自己写了一个云函数,用户向数据库插入数据,云函数是这样的: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const _ = db.command exports.main = async (event, context) => { try { return await db.collection(event.collection).add({data: event.add}) } catch (e) { return e } } 我这样调用它: wx.cloud.callFunction({ name: 'adddata', data: { collection: 'support', add: { creationTime:db.serverDate(),//问题在这里,我希望引用服务器时间,但这样做是不行的 requestType: that.data.arrRequestType[that.data.selectedRequestType], request: that.data.newRequestInput } }, success: res => { console.log(res) //提示 wx.showToast({ title: '新增成功', icon: 'success' }) }, fail: res => { //提示 wx.showToast({ title: '新增失败', icon: 'none' }) console.error } }) 存在问题:我希望在data中引用服务器时间,所以我尝试在调用云函数前声明数据库const db = wx.cloud.database(),再在data中用db.serverDate()。但也有是不行的。 errCode: -501007errMsg: "[InvalidParameter] Check request parameter fail. Please check your request, but if the problem cannot be solved, contact us.; "求大神指教应该这么写,谢谢。
2020-07-22 - 前端调用云函数,data中引用服务器时间的问题?
自己写了一个云函数,用户向数据库插入数据,云函数是这样的: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const _ = db.command exports.main = async (event, context) => { try { return await db.collection(event.collection).add({data: event.add}) } catch (e) { return e } } 我这样调用它: wx.cloud.callFunction({ name: 'adddata', data: { collection: 'support', add: { creationTime:db.serverDate(),//问题在这里,我希望引用服务器时间,但这样做是不行的 requestType: that.data.arrRequestType[that.data.selectedRequestType], request: that.data.newRequestInput } }, success: res => { console.log(res) //提示 wx.showToast({ title: '新增成功', icon: 'success' }) }, fail: res => { //提示 wx.showToast({ title: '新增失败', icon: 'none' }) console.error } }) 存在问题:我希望在data中引用服务器时间,所以我尝试在调用云函数前声明数据库const db = wx.cloud.database(),再在data中用db.serverDate()。但也有是不行的。 errCode: -501007errMsg: "[InvalidParameter] Check request parameter fail. Please check your request, but if the problem cannot be solved, contact us.; "求大神指教应该这么写,谢谢。
2020-07-22 - 正则表达式到底这么写?
判断字符串是否包含“什么”、“哪里”、“看看”、“查”等4个关键字词的正则表达式。 只要包含其中一个或以上,均为true 如果没有包含上述字词,则为false 请指教。
2020-07-21 - 云函数updata经纬度坐标的问题?
云函数是这样的: // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const _ = db.command // 云函数入口函数 exports.main = async (event, context) => { try { return await db.collection(event.collection).where(event.where).update({ data: event.update }) } catch (e) { console.error(e) } } 调用是这样的: //调用云函数 wx.cloud.callFunction({ name: 'updataothers', data: { collection: 'map_customer', where: { customer: that.data.vOptions.customer }, update: { location: new db.Geo.Point(that.data.location.longitude, that.data.location.latitude) } }, success: res => { //提示 that.setData({ customerPositionState: '定位成功,请关闭小程序', currentDialog: 'customerPositionState' }) }, fail: res => { //提示 that.setData({ customerPositionState: '定位失败,请点击 “我的位置” 重新定位', currentDialog: 'customerPositionSuccess' }) console.error } }) 这样会调用失败,查看云函数日志,根本没有被调用。 经过反复测试,如果将update的location改为字符串或其他非坐标的变量,则可以成功updata。唯独updata坐标就不行。 以下data可成功updata: location: that.data.location.longitude //或 location: 'test' 求解决方法。谢谢
2020-07-18