帖子
帖子
用户
博客
课程
显示全部楼层
13
帖子
0
勋章
107
Y币

[BUG] 使用DB模块,查询数据前后查询数据不一致

[复制链接]
发表于 2022-5-9 15:25:19
本帖最后由 Icoder 于 2022-5-9 16:19 编辑

在使用db模块的时候,同意的查询语句,查询的数量不一致,是什么原因导致?是存储数据量有限制吗?
保存数据之后的查询:
1>执行语句
6278c14ae8b74.png
1>查询的数据

6278c166cd57d.png
再次执行查询的结果:
1>查询的结果


6278c0cfbd9ed.png


通过类似for的方式进行批量插入操作,保存完之后数据是432条,保存之后重新进入模块功能,查询条数为329条。这是什么原因造成的?并且每次后台传输过来的数据是不变的,但是每次app插入更新的数量却是不固定的。请大神解惑

380
帖子
4
勋章
6
Y币
for 循环里不能套异步函数,你是不是这样用了
13
帖子
0
勋章
107
Y币
您好!,没在for里面套,实际上是一个递归调用,直至所有数据保存完毕,而且保存调用的是db的同步函数
技术支持-F · 2022-5-9 17:02for 循环里不能套异步函数,你是不是这样用了
380
帖子
4
勋章
6
Y币
那不应该的,确认是不是递归调用

再整体检查一遍代码
Icoder · 2022-5-9 17:39您好!,没在for里面套,实际上是一个递归调用,直至所有数据保存完毕,而且保存调用的是db的同步函数
13
帖子
0
勋章
107
Y币
您好,已经检查过代码,确定是递归调用,整体实现方案如下:
后台传过来一个数据集合:backData[100]--假设其中有100条数据。本地数据库表有唯一主键,前端大概逻辑如下:


  1. let status=save(backData[0])

  2. if(status){
  3.     backData.splice(0,1);
  4.     save(backData)
  5. }else{
  6.     update(backData[0])
  7.     backData.splice(0,1);
  8.     save(backData)
  9. }
复制代码
技术支持-F · 2022-5-9 18:34那不应该的,确认是不是递归调用

再整体检查一遍代码
380
帖子
4
勋章
6
Y币
两处的查询语句不一样
13
帖子
0
勋章
107
Y币
where 后面条件一样,前面无非一个是count(1) 一个是count(*) 这对结果没有任何影响啊
技术支持-F · 2022-5-10 10:37两处的查询语句不一样
380
帖子
4
勋章
6
Y币
可以新建一个页面,用模拟数据测试db 的这两个接口,看有问题吗

把能运行的测试代码发出来
Icoder · 2022-5-10 11:14where 后面条件一样,前面无非一个是count(1) 一个是count(*) 这对结果没有任何影响啊
13
帖子
0
勋章
107
Y币
谢谢!在未修改任何代码的情况下,又莫名其妙的好了
技术支持-F · 2022-5-11 10:54可以新建一个页面,用模拟数据测试db 的这两个接口,看有问题吗

把能运行的测试代码发出来
您需要登录后才可以回帖 登录

本版积分规则