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

QQ登录

只需一步,快速开始

查看: 9290|回复: 35

[结贴] 多表关联查询

[复制链接]

43

主题

159

帖子

345

积分

中级会员

Rank: 3Rank: 3

积分
345
QQ
发表于 2017-2-28 10:11:39 | 显示全部楼层 |阅读模式
model中关联了5个baasData(1,2,3,4,5)。通过sqlQuery自定义了查询action,
一个list组件关联数据1,li中有5个span。span的bind-text绑定方法,该方法传入3个参数,
数据1的数据是这3个参数,数据2的查询参数就是这3个数据,设置完然后refreshData(),
数据2.find(),获得row,数据3的查询参数是row("列名"),设置完后refreshData(),
数据3.find(),获得row1,数据4的查询参数是row1("列名"),设置完后refreshData(),
数据4.find(),获得row2。然后return row("列名")+row1("列名")之类的。
结果在界面上看不到数据,报错Cannot read property 'val' of undefined。
发表于 2017-2-28 13:36:35 | 显示全部楼层
多表关联查询,建议最好通过自定义sql实现!一次请求就可以查出想要的数据!
而不要在前端刷新请求这么多次!这样肯定不合适的!
参考:
http://docs.wex5.com/wex5-server-question-list-2012/

关于报错信息的问题!你使用排除法试试吧!首先自定义js中先返回一个固定值,其他先注释掉,
报错信息是调用 'val' 方法 不存在!你的代码中是否有写这个??在哪儿写的??有可能格式不对
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

43

主题

159

帖子

345

积分

中级会员

Rank: 3Rank: 3

积分
345
QQ
 楼主| 发表于 2017-3-1 11:03:29 | 显示全部楼层
liangyongfei 发表于 2017-2-28 13:36
多表关联查询,建议最好通过自定义sql实现!一次请求就可以查出想要的数据!
而不要在前端刷新请求这么多次 ...

Action:wp/fm/queryXxt2_device_info失败,Action[wp/fm/queryXxt2_device_info]执行失败,SQL执行失败,SQL:SELECT * FROM xxt2_device_info LIMIT 0,20

把limite修改为-1,还是报错,是因为数据库的数据太多了吗?

执行Action:wp/fm/queryXxt2_device_info失败,Action[wp/fm/queryXxt2_device_info]执行失败,SQL执行失败,SQL:SELECT * FROM xxt2_device_info
回复 支持 反对

使用道具 举报

发表于 2017-3-1 11:39:11 | 显示全部楼层
hjn090301 发表于 2017-3-1 11:03
Action:wp/fm/queryXxt2_device_info失败,Action[wp/fm/queryXxt2_device_info]执行失败,SQL执行失败 ...

完整报错信息发来看下!
limite 设置为多少都会标错吗?
其他功能正常吗??比如外卖,先保证环境是正常的
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

43

主题

159

帖子

345

积分

中级会员

Rank: 3Rank: 3

积分
345
QQ
 楼主| 发表于 2017-3-1 14:23:52 | 显示全部楼层
liangyongfei 发表于 2017-3-1 11:39
完整报错信息发来看下!
limite 设置为多少都会标错吗?
其他功能正常吗??比如外卖,先保证环境是正常 ...

上面的错解决了,是数据表有点问题,解决了。
现在把limite设置为20,则把find获得的行输出一下,显示一个空数组,Cannot read property 'val' of undefined

把limite设置为-1,把find获得的行输出一下,显示一个空数组,同时开发工具的控制台报如下的错:
三月 01, 2017 2:18:59 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet WeX5_Baas_Servlet threw exception
java.lang.OutOfMemoryError: Java heap space
        at com.alibaba.fastjson.serializer.SerializeWriter.expandCapacity(SerializeWriter.java:200)
        at com.alibaba.fastjson.serializer.SerializeWriter.writeStringWithDoubleQuote(SerializeWriter.java:606)
        at com.alibaba.fastjson.serializer.SerializeWriter.writeFieldName(SerializeWriter.java:1332)
        at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:144)
        at com.alibaba.fastjson.serializer.ListSerializer.write(ListSerializer.java:126)
        at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:169)
        at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:367)
        at com.alibaba.fastjson.JSON.toJSONString(JSON.java:556)
        at com.justep.baas.data.DataUtils.writeJsonToResponse(Unknown Source)
        at com.justep.baas.servlet.BaasServlet.execService(Unknown Source)
        at com.justep.baas.servlet.BaasServlet.service(Unknown Source)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:745)
回复 支持 反对

使用道具 举报

发表于 2017-3-1 14:49:10 | 显示全部楼层
hjn090301 发表于 2017-3-1 14:23
上面的错解决了,是数据表有点问题,解决了。
现在把limite设置为20,则把find获得的行输出一下,显示一 ...

find 获取的行是一个数组!,如果你想获取第一行中的值应该是rows[0].val('字段')
如果多行获取字段就 需要循环数组!


java.lang.OutOfMemoryError: Java heap space

这个错误是内存溢出了!可能是数据量太大了
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

43

主题

159

帖子

345

积分

中级会员

Rank: 3Rank: 3

积分
345
QQ
 楼主| 发表于 2017-3-1 15:17:39 | 显示全部楼层
liangyongfei 发表于 2017-3-1 14:49
find 获取的行是一个数组!,如果你想获取第一行中的值应该是rows[0].val('字段')
如果多行获取字段就 需 ...

数据表中有2万多条数据,那内存溢出怎么解决啊。
不管limite是20还是-1,所得的都是空数组,获得不到啊,有好的解决办法吗?
回复 支持 反对

使用道具 举报

发表于 2017-3-1 16:05:32 | 显示全部楼层
hjn090301 发表于 2017-3-1 15:17
数据表中有2万多条数据,那内存溢出怎么解决啊。
不管limite是20还是-1,所得的都是空数组,获得不到啊, ...

limite是20 会报什么错??肯定不能设置为-1的
刚刚你只说find方法获取的集合'val' of undefined
可能你代码的写法不正确!我不说过他是个数组了吗??还有什么问题
你测试下data.count()是多少吧!?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

43

主题

159

帖子

345

积分

中级会员

Rank: 3Rank: 3

积分
345
QQ
 楼主| 发表于 2017-3-1 16:25:44 | 显示全部楼层
liangyongfei 发表于 2017-3-1 16:05
limite是20 会报什么错??肯定不能设置为-1的
刚刚你只说find方法获取的集合'val' of undefined
可能你 ...

limite设置为20,用data.count(),测试了一下是20。我用find方法获取的集合row,用console.log()输出了一下,是个空数组。return row[0].val("列名");报的错就是
Uncaught TypeError: Unable to process binding "text: function (){return $model.info( val("ca"),val("ht"),val("lp"),"school") }"
Message: Cannot read property 'val' of undefined
回复 支持 反对

使用道具 举报

发表于 2017-3-1 16:44:46 | 显示全部楼层
hjn090301 发表于 2017-3-1 16:25
limite设置为20,用data.count(),测试了一下是20。我用find方法获取的集合row,用console.log()输出了一 ...

空数组说明find方法获取的数据都不满足条件啊!,那么 row[0]当然就是空的!
这是js基本语法问题!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-25 11:52 , Processed in 0.058076 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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