微信小程序数据库数据导入二维数组,实现数据库搜索结果按钮分页显示(多个条件搜索结果的分页显示)

实现目标:

大体框架是:数据库中有个merchant的集合,里面录入的是,每个用户对应的id、openid(这俩系统默认参数)还有自定义参数:name、age;wxml界面有button搜索按钮,有俩input分别是对name、age的搜索,还有下一页按钮next和上一页按钮last

如下:

id:*********12                        id:*********34                   id:*********56                   id:*********78

openid:*********001               openid:******002            openid:*********003         openid:*********004

name:张三                            name:李四                      name:王五                      name:赵一

age:20                                     age:20                         age:21                            age:22

想要实现搜索age是20的人,可以用

db.collection("merchant").where({

                      age:20

                         }).get({

                             success(res){

                                    console.log(res.data)

                               },

                              fail(res){},

                              complete(res){}

                    })

在调试器里,显示了包含两个元素的数组,(内容大体是这样的,格式有点问题,勿怪)

                                 array(0){id:**********12,openid:*********001,name:张三,age:20}

                                 array(1){id:**********34,openid:*********002,name:李四,age:20}

我们可以在页面定义两个变量,然后分别把name和age值传过去,从而实现搜索结果的显示

但是,如果我想添加两个按钮:上一页和下一页。

实现:按一下button搜索,立即显示第一个数组,按一下下一页按钮next,才会显示第二按钮,而不是一下都显示出来俩数组 

因为一维数组只能实现单个数组的显示,也就是只能显示array(0)或者array(1),虽然可以实现一般的条件搜索结果的储存,但是这里加了一个下一页按钮next和对age、name的搜索,不能每次按一下下一页按钮next,就重新对数据库来一遍搜索,然后,对搜索结果累加显示,那样就很麻烦了(还要对age、name搜索进行判断,是只搜索其中一个【其中一个input为空】,还是俩个都搜索【input都不为空】)。那样不如在button搜索事件里处理,而不是放到下一页按钮next里,而且对于按钮next、last,什么时候可以使用(disabled值)也要进行判断,(数据集合中未找到搜索目标时,直接showtoast一个提示:不能为空;只找到一个结果时,next和last都不能使用;找到两个以上结果时,则有相应变化:如图 [ ]为不可用,【】为可用

只有两个搜索结果时:

              开始时:                          [last]         【next】

              点一下next:                 【last】        [next]

             点一下last:                     [last]         【next】

三个搜索结果时:

              开始时:                          [last]         【next】

              点一下next:                 【last】      【next】

             点一下next:                  【last】        [next]

              点一下last:                  【last】      【next】

              点一下last:                    [last]         【next】

所以这里尽量把对搜索结果分页显示的处理放到搜索button按钮事件处理里

本来想直接在js的data里定义一个list[][2](只定义行长度2,未定义列长度,因为是动态加入信息的,所以也就不能限制录入信息个数),后来发下有很多问题,而且也找不到js文件data中,定义二维数组的例子,都想放弃了

后来想到wx小程序是有js的影子的,就去js里找找看了

后来想到了,别想着以二维数组的形式,把搜索结果录入到data的list[][2],而且这里开始也没法初始化,

于是,换了一个思路:把搜索结果,直接录入到临时二维数组list[dataleng][2]里,这里还可以利用datalength实现不限制录入信息个数的功能,一举两得;然后用that.setData({list:list}),定义到data里的list中,实现全局调用,代码如下

 

db.collection("merchant").where({

name:this.data.inputSearchName

}).get(({

success(res){

let dataLength=res.data.length

let list = new Array();(非常坑人的一点,大写大写大写,不然会出现奇怪的找不到错的报错!!!很坑很坑)

for(let n=0;n<dataLength;n++){

                list[n]=new Array();

               list[n][0]=res.data[n].name,

               list[n][1]=res.data[n].age,

}

               that.setData({

                        list:list

               })

           that.setData({

            searchResult:("搜索结果:"+dataLength+"个")

          }

},

 fail(res){},

complete(res){}

}))

 

以上

总结:

开发会掉进坑,别怂,踩多了,爬出坑时,会更熟练哦哈哈 0.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值