找回密码
 立即注册

QQ登录

只需一步,快速开始

bytcib
金牌服务用户   /  发表于:2020-6-11 16:06  /   查看:3831  /  回复:3
本帖最后由 bytcib 于 2020-6-11 16:14 编辑

项目中我们将整个workbook保存为一条数据记录存放在数据库中,但由此造成了多人同时在线编辑时对该条数据的修改保存会造成表中数据的互相覆盖,为了实现局部保存功能,我们使用了postgreSQL数据库中的jsonb局部修改语句来执行数据的局部更新,例如:
UPDATE testjson set info = jsonb_set((SELECT info  from testjson where id = 4)::jsonb, '{sheets,页面名称,data,dataTable,0,5,value}', '"newValue"'::jsonb, false) where id = 4

其中语句中的记录id, 页面名称,脏数据数组(包含了row,col,newValue)等变量我们通过post发到后端服务器,并将该语句执行成功了,但是发现一个问题:
这是我们提取出的一条workbook记录:
企业微信截图_15918608714513.png
记录结构展开:
企业微信截图_15918621947369.png
页面对应位置:
企业微信截图_15918623917651.png
我们发现在没有value或者formula的地方在数据库中不会记录其对应的row,col位置,所以在没有填写过值或公式的单元格中没有办法使用当前的updete语句,请问有什么方法能让数据库中这些没有赋值和公式的单元格有对应的位置记录吗(不会出现类似例子中55-62列没有的情况,但是不能将value直接赋值为0,因为会参与到有些平均类公式的计算)?

3 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-6-11 18:26:46
沙发
我理解有两种方法,第一种就是在第一次保存模板的时候就将所有节点填充好,没有值的就设置null,第二种就是update的时候先检查是否存在,不存在再insert,但是这个要看下你们用的组件是否有类似功能,这已经不是spreadjs的功能了。
回复 使用道具 举报
bytcib
金牌服务用户   /  发表于:2020-7-1 11:48:01
板凳
dexteryao 发表于 2020-6-11 18:26
我理解有两种方法,第一种就是在第一次保存模板的时候就将所有节点填充好,没有值的就设置null,第二种就是 ...

好的,全部设置为空字符串就可以了
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-7-1 11:59:37
地板
有问题欢迎开新帖交流
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部