微信小程序,前端向后端传递db.command条件的问题
本帖最后由 cqwcns 于 2021-10-16 12:41 编辑出于权限、数据查询条数限制、数据库安全等考虑,寡人一直都只通过云函数对数据库进行增查改操作。也就是在前端把data、where等条件传到云函数完成操作。
问题来了,前端到后端的无法直接传递db.command这种数据。
一开始我想到一个折衷的方法,前端这样写:
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的层次比较正常):
async function funForIn(data, OPENID) {
for (let i in data) {
if (typeof data == 'object') {
funForIn(data)
} else {
// 替换OPENID
if (String(data).includes('thisIsOpenid')) {
data = data.replace(/thisIsOpenid/g, OPENID)
}
if (String(data).slice(0, 8) == 'command=') {
// 查询指令
data = eval(data.slice(8))
} else if (String(data).slice(0, 7) == 'regExp=') {
// 正则Get
data = db.RegExp({
regexp: String(data.slice(7)),
options: 'i',
})
}
}
}
}
虽然很非主流,基本上可以解决大部分的需求,但问题来了,对于Key与val层次另类的,类似这种,就无能为力了。
db.collection('todo').where(_.or([
{
progress: _.gt(80)
},
{
done: true
}
]))
所以,为了实现前端向后端传db.command条件,各位大佬有什么好的办法?谢谢。
看不懂啊
页:
[1]