名图客
名图客
  • 发布:2021-03-15 10:27
  • 更新:2021-03-17 16:59
  • 阅读:756

JQL什么时候能够支持字段更新指令?

分类:uniCloud

这些字段更新指令:
set 设置字段值
remove 删除字段
inc 加一个数值,原子自增
mul 乘一个数值,原子自乘
push 数组类型字段追加尾元素,支持数组
pop 数组类型字段删除尾元素,支持数组
shift 数组类型字段删除头元素,支持数组
unshift 数组类型字段追加头元素,支持数组

什么时候能够在客户端支持操作,还是因为权限控制原因,最终无法支持,必须得用云函数?如果是不能支持,麻烦也请提前告知,就不等了,直接用云函数。set倒是都无所谓,主要是remove和push/unshift这两个指令,太重要了,文档型数据库,多层级存储很普遍,没有这两个指令,操作数据库太麻烦。

2021-03-15 10:27 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

暂时没想到好的方案。比如schema限制某数组长度为2,此时无法确定是否允许push,建议先使用云函数来实现相关需求

  • 名图客 (作者)

    是否可以调用字段权限来控制?权限控制里面不是有get('database.collection.${}'),既然可以获取到文档的数据,判断某个字段的长度应该不是很麻烦吧。另外,既然有maxLength之类的字段属性,那么字段更新同理也可以利用该属性做判断呀

    2021-03-18 11:35

  • 名图客 (作者)

    没有字段更新命令,很容易造成数据写冲突,产生脏数据。用云函数和客户端混合,意味者要配置两套权限控制,相对于仅使用云函数,项目反而变得更复杂了,好纠结。

    2021-03-18 11:39

  • DCloud_uniCloud_WYQ

    回复 名图客: 这些都是要查库的,太浪费性能了

    2021-03-19 16:25

  • 名图客 (作者)

    回复 DCloud_uniCloud_WYQ: 如果不查库,那就只能盲写,到云端进库了校验再抛回错误,这种错误毕竟小概率,比起没有字段操作命令来说因小失大了。在客户端既不查库又想在前端校验,貌似矛盾了。

    2021-03-19 20:35

  • 名图客 (作者)

    回复 DCloud_uniCloud_WYQ: 类似cmd.remove()命令,不查库是无法实现校验与操作的。字段操作属于update类操作,除了inc比较频繁,其他的命令操作频率都不是很高吧,inc这个命令,用途最多的是阅读加1,这种操作,失败的可能性几乎为零,所以,综合分析考虑,所有字段操作命令,即使查库,也没有很浪费性能。

    2021-03-19 20:42

该问题目前已经被锁定, 无法添加新回复