这些字段更新指令:
set 设置字段值
remove 删除字段
inc 加一个数值,原子自增
mul 乘一个数值,原子自乘
push 数组类型字段追加尾元素,支持数组
pop 数组类型字段删除尾元素,支持数组
shift 数组类型字段删除头元素,支持数组
unshift 数组类型字段追加头元素,支持数组
什么时候能够在客户端支持操作,还是因为权限控制原因,最终无法支持,必须得用云函数?如果是不能支持,麻烦也请提前告知,就不等了,直接用云函数。set倒是都无所谓,主要是remove和push/unshift这两个指令,太重要了,文档型数据库,多层级存储很普遍,没有这两个指令,操作数据库太麻烦。
名图客 (作者)
是否可以调用字段权限来控制?权限控制里面不是有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