起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3390|回复: 14

[结贴] 求助,后端查询如何实现?

[复制链接]

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
发表于 2016-12-14 16:21:59 | 显示全部楼层 |阅读模式
我有一个search.w页面来提供搜索功能,点击搜索后传参给我的infolist.w页面。在infolist.w页面接受参数已经成功了,需要在baasdata的info_content列实现查找。我使用的是baasphp做后端,建立了服务文件和使用了默认的2个action,我的infolist.w的代码如下:
  1.         Model.prototype.modelParamsReceive = function(event) {
  2.                 /*
  3.                  * 1、接收上页传来参数、显示在搜索框中、参数不变不刷新
  4.                  */
  5. var context = this.getContext();
  6. var keyValue = event.params.keyValue;                                //接收search #!传参
  7.                 alert(keyValue);
  8. if (this.params !== undefined) {
  9.                         if (this.keyValue != this.params.keyValue) {
  10.                                 this.keyValue = this.params.keyValue;
  11.                                 var data = this.comp('infoData');
  12.                                 data.filters.setVar("filter",'%'+keyValue+'%');                         <font color="#ff0000"> ///这里不知道如何写去数据库的info_content列里</font>
  13.                                 data.refreshData();
  14. }
  15.                 }
  16.         };
复制代码
keyValue已经可以正常接收了,就是红色这里不知如何写,请赐教!

还有就是我的infolist页面的数据还需要做位置的过滤,也是在这里实现,还是需要再建立一个action用sql语句实现?



发表于 2016-12-14 16:46:09 | 显示全部楼层
如果是自定义sql 设置参数传递,可以使用data.filters.setVar

如果是不是自定义sql , 直接使用data.setValue('filter',"字段 like %'值'%")

http://docs.wex5.com/wex5-server-question-list-2006/
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2016-12-14 17:26:48 来自手机 | 显示全部楼层
liangyongfei 发表于 2016-12-14 16:46
如果是自定义sql 设置参数传递,可以使用data.filters.setVar

如果是不是自定义sql , 直接使用data.setVa ...

我所有的资讯都需要进行地理位置的过滤,而搜索的结果又是在地理位置的基础上进行过滤。
1,那么我正常的数据是使用wex5提供的默认action实现,而搜索的数据使用自定义SQLaction实现吗?请给我点思路!
2,在一个w文件中的一个baasdata只能用一个queryaction 吧?像这种如何处理?
回复 支持 反对

使用道具 举报

8

主题

131

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
QQ
发表于 2016-12-14 21:00:53 | 显示全部楼层
每次动态设置filter后,刷新baasdata就行了
回复 支持 反对

使用道具 举报

发表于 2016-12-15 14:01:30 | 显示全部楼层
ufo1982ufo 发表于 2016-12-14 17:26
我所有的资讯都需要进行地理位置的过滤,而搜索的结果又是在地理位置的基础上进行过滤。
1,那么我正常的 ...

公共的query action , 动态设置过滤条件,调用  data.setFilter  和 data.refreshData() 刷新即可
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2016-12-16 15:13:52 | 显示全部楼层
本帖最后由 ufo1982ufo 于 2016-12-16 15:20 编辑
liangyongfei 发表于 2016-12-15 14:01
公共的query action , 动态设置过滤条件,调用  data.setFilter  和 data.refreshData() 刷新即可 ...

我按照你说的方法写了没有反应,数据出不来了!chrome的调试如下:
  1.         Model.prototype.modelParamsReceive = function(event) {
  2.                 /*
  3.                  * 1、接收上页传来参数、显示在搜索框中、参数不变不刷新
  4.                  */
  5.                 debugger;
  6.                 var context = this.getContext();
  7.                 var ukey = context.getRequestParameter("key");                //接收url参数
  8.                 alert('uk='+ukey);
  9.                 var keyValue = event.params.keyValue;                                //接收searchde #!传参
  10.                 alert(keyValue);
  11.                 if (this.params !== undefined) {
  12.                                 var key = this.params.keyValue;
  13.                                 var data = this.comp('infoData');
  14.                                 data.setValue("filter","info_content like %"+key+"%");
  15.                                 data.refreshData();
  16.                 }
  17.         };
复制代码

最后那个key还是对的,就是数据刷不出来,是怎么回事?
写成这个:'filter',"info_content like %'key'%"也出不来!

QQ截图20161216152008.png

回复 支持 反对

使用道具 举报

发表于 2016-12-16 16:04:45 | 显示全部楼层
ufo1982ufo 发表于 2016-12-16 15:13
我按照你说的方法写了没有反应,数据出不来了!chrome的调试如下:

最后那个key还是对的,就是数据刷不出 ...

注意引号问题!
单引号和双引号混着用,
data.setValue("filter","info_content like %'"+key+"'%");
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2016-12-16 16:37:04 | 显示全部楼层
liangyongfei 发表于 2016-12-16 16:04
注意引号问题!
单引号和双引号混着用,
data.setValue("filter","info_content like %'"+key+"'%"); ...

代码改成这样了!
  1.         Model.prototype.modelParamsReceive = function(event) {
  2.                 /*
  3.                  * 1、接收上页传来参数、显示在搜索框中、参数不变不刷新
  4.                  */
  5.                 debugger;
  6.                 var context = this.getContext();
  7.                 var uk = context.getRequestParameter("key");                //接收url参数
  8.                 alert('uk='+uk);
  9.                 var sk = event.params.keyValue;                                //接收searchde #!传参
  10.                 alert('sk='+sk);
  11.                 var key;
  12.                 if (uk !== ""){key = uk ;}else if(sk !== undefined ){key = sk;}else{return;}
  13.                 alert("key="+key);
  14.                 var data = this.comp('infoData');
  15.                 data.setFilter("filter","info_content like %'"+key+"'%");
  16.                 var f = data.getFilter("filter");
  17.                 alert("filter="+f);
  18.                 data.refreshData();
  19. };
复制代码
走到这里都是对的,可以读取filter了!
33.png
55.png
然后就是这个报错。
44.png
是什么情况呢?


回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2016-12-16 16:41:41 | 显示全部楼层
我注释掉这些代码就不会报错了,应该就是最后refreshData引起的吧?看不懂后面这些报错信息了!
回复 支持 反对

使用道具 举报

发表于 2016-12-16 16:43:59 | 显示全部楼层
ufo1982ufo 发表于 2016-12-16 16:37
代码改成这样了!
走到这里都是对的,可以读取filter了!

你的后端是自定义的sql 实现的吗??
如果是标准的 baas  query action  ,这样就可以的!
如果是自定义sql .关于传参赋值:
两种
http://docs.wex5.com/wex5-server-question-list-2006/
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-25 05:47 , Processed in 0.069414 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表