吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1109|回复: 1
收起左侧

[求助] 微信小程序,前端向后端传递db.command条件的问题

[复制链接]
cqwcns 发表于 2021-10-16 12:39
本帖最后由 cqwcns 于 2021-10-16 12:41 编辑

出于权限、数据查询条数限制、数据库安全等考虑,寡人一直都只通过云函数对数据库进行增查改操作。也就是在前端把data、where等条件传到云函数完成操作。
问题来了,前端到后端的无法直接传递db.command这种数据。


一开始我想到一个折衷的方法,前端这样写:
[JavaScript] 纯文本查看 复制代码
val1: 'command="thisIsOpenid"'
val2: 'command=db.serverDate()'
val3: 'command=new Date(new Date("1984-09-03 18:19:08").setHours(firstDate.getHours() - 8))'


后端再递归遍历过来(这种情况下Key与val的层次比较正常):
[JavaScript] 纯文本查看 复制代码
async function funForIn(data, OPENID) {
  for (let i in data) {
    if (typeof data[i] == 'object') {
      funForIn(data[i])
    } else {


      // 替换OPENID
      if (String(data[i]).includes('thisIsOpenid')) {
        data[i] = data[i].replace(/thisIsOpenid/g, OPENID)
      }


      if (String(data[i]).slice(0, 8) == 'command=') {
        // 查询指令
        data[i] = eval(data[i].slice(8))
      } else if (String(data[i]).slice(0, 7) == 'regExp=') {
        // 正则Get
        data[i] = db.RegExp({
          regexp: String(data[i].slice(7)),
          options: 'i',
        })
      }


    }
  }
}



虽然很非主流,基本上可以解决大部分的需求,但问题来了,对于Key与val层次另类的,类似这种,就无能为力了。
[JavaScript] 纯文本查看 复制代码
db.collection('todo').where(_.or([
  {
    progress: _.gt(80)
  },
  {
    done: true
  }
]))


所以,为了实现前端向后端传db.command条件,各位大佬有什么好的办法?谢谢。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mfvpnhaha 发表于 2021-10-16 14:23
看不懂啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 20:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表