问题汇总
暂时将问题分为三类:服务、开发、控件
- 开发
- web+h5
- 微信小程序
- 支付宝小程序
- 控件
- web+h5
- web
- h5
- 微信小程序
- 支付宝小程序
- css
服务
数据库操作
- 数据库操作的原子操作在分类
@feidao/web/atom/nodejs/db
目录下; - 操作分为:单表查询、复杂查询、数据操作(增、删、改)
- 服务中的
spaceid
、systemid
、productid
只能通过config
引入,不能写为固定值 - 服务中
atom
函数的参数为固定模板 - 在服务中定义接口时,接口的名称
I@表名-驼峰式@
,例如表名为order_info
,定义的接口名称为IOrderInfo
单表查询
- 实例化
db/query
原子操作传入了systemid
参数,即使用此实例化所查询的表必须存在传入的systemid中 - 可以一次查询多张无关联表的数据,并尽量少的调用
exec
操作 - 查询表数据时,必须确保传入的
表名、字段
都是正确的 - 查询的字段只查询当前页面使用到的字段,无关字段不再查询
- 执行
exec
之后,若还需查询其他同一个systemid下的表可以继续使用当前实例化后的方法
数据操作
- 实例化
db/operate
原子操作传入了systemid
参数,即使用此实例化所操作的表必须存在传入的systemid中 - 数据操作尽可能少的调用实例化后的
exec
函数 - 在调用
exec
之前存放的增删改操作,在调用exec
时一次性操作数据库,即操作成功则全部成功
,若有一个数据操作失败则此次操作全部失败
- 多次
exec
操作的数据则无法实现事务
增
- 新增数据方法只能新增一条数据,若需要新增多条数据则需要调用多次新增方法
- 新增方法中传入的新增数据可以不传入
_id
- 新增方法必须确定传入的
表名
正确 - 传入的新增数据必须确定传入的
字段名
正确 - 传入的新增数据必须确定传入的字段数据符合数据库
字段类型
- 传入的新增数据必须确定数据库中此表所设置的
必填字段
有数据
删
- 删除方法必须确定传入的
表名
正确 - 删除方法传入的第二个参数为
删除条件
,即满足传入条件的数据都会被删除,用之需谨慎
改
- 修改方法必须确定传入的
表名
正确 - 修改方法传入的第二个参数为
修改条件
,即满足传入条件的数据都会被修改 - 修改方法传入的第三个参数为
修改内容
- 修改内容中禁止传入字段
_id
服务调用
- 调用服务时必须确定传入的
服务名称(包括路径)
正确,传入的参数格式必须和服务中定义的参数格式一致 - 尽可能减少服务调用
- 可以在服务中引入其他已有的服务
导出服务
- 导出服务请查看导出文档
开发
- 升级vscode版本到1.30.1之后,在vscode左侧点击
方块
插件菜单 - 在搜索框中输入
feidao
,安装搜索到的feidao-tools
插件 - 通过插件完成的功能则不再陈述
web+h5
- 将所有的响应文件
na***.ts和a***.ts
引入到对应的n.ts和b.ts
文件中 - 将引入的响应变量定义为响应文件名
- 将引入的响应变量放入
actions
中 - 新增弹窗中用户输入的数据需在代码中控制删除
- 页面跳转尽可能使用
a
标签 - 组件A调用组件B的事件
a000
并传入参数,在组件a000
中解析传入的参数时可以先将args
打印或加断点调试,确定参数结构后再进行解析,避免解析结构不对造成的其他问题 - 在使用原子操作日期
dt/format、dt/parse
做日期处理时,传入和获取到的时间戳都是毫秒
- 原子操作有分类控制,不同分类即
nodejs、browser、wx、ali
下的原子操作不能混合使用 - 在使用原子操作时,在原子操作方法之前全部加上
await
关键字 - storage、global、local三个分类原子操作区别,storage存放在本地缓存,在不手动清除的情况下会一直存在;global存放在当前页签中,在不手动清除的情况下关闭当前页签或者关闭浏览器,之前存放的数据全部清空;local存放在当前组件中,不同组件不能相互使用
- 原子操作
whoami
获取到的数据存放在了global
中 - 调用
dsd服务
必须确保传入的参数格式和要求的参数格式一致 - 在事件响应中获取节点对象,通过
args[0]
获取事件对象,事件对象的target、currentTarget
区别,target
为当前点击的节点对象,currentTarget
为当前绑定事件的节点对象 - p块中dot模板使用方法dot
- 在代码中所有涉及到地址的都不能写成固定值,而是从
config
中引入 - 在js中进行小数计算时使用金钱计算原子操作
- 按钮绑定点击事件,data-feidao-actions=”click:a010;”事件绑定时不允许加分号
- tpl.ts内容不能为空,为空时会报错误
this.childNodes.map is not a function
- 必须使用原子操作
render
渲染包含事件的内容 - 将行数据通过JSON序列化之后放到html上时,如果数据中包含空格,html则认为此属性值结束,再通过节点获取的行数据不是完整的数据,无法进行JSON的反序列化;可以将序列化后的数据编码,获取节点内容先解码再进行反序列化
- ts的基本数据类型typescript
- 禁止在响应文件的函数外定义变量
- 使用正则
regex
模糊查询时,若查询的内容包含正则的特殊字符().*\^$+[?{|
时,需要添加转义\\
;例如查询"marking_account_name":{"$regex":".*(.*","$options":"i"}
,正确写法为"marking_account_name":{"$regex":".*\\(.*","$options":"i"}
,否则报错信息为Unclosed group near index 5 .*(.*
;只有特殊字符需要添加,其他内容不需要转义
微信小程序
- 在开发中,微信小程序开发工具默认会对请求地址进行校验,需将微信开发者工具右侧
详情
选项中不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书
这个选项勾选上 - 微信小程序中向Echars图表通过服务传递参数后无法正常渲染,解决方法:在 onLoad 里面获取数据,存放在Page.local里面,然后在 onReady 里面调用 init() , init调用定义的函数那个setOption(),将数据当做参数传过去
- WX小程序中使用Echarts柱状图,使用X轴作为类别,名称过长时会不显示;使用Y轴展示类别,X轴展示值,同时使类别名称尽量精简
- 小程序中使用第三方控件,使用构建npm功能时部分文件不能构建;重新安装最近能正常使用的版本
- 使用parse原子操作转换时间戳时,如果转换的日期分隔符为‘-’时,本地和安卓系统测试没问题,IOS系统页面上的值会显示NAN;原子操作所得结果不能被IOS系统正确识别;将要转换的日期分隔符变为‘/’,可以使用 日期.replace(/-/g, ‘/’)
- 小程序真机测试下拉刷新数据功能时,刷新提示的样式会一直停留在页面上;在操作下拉刷新的事件里使用stop_pull_down();原子操作路径import stop_pull_down from ‘@feidao/web/atom/wx/app/api/interaction/stop-pull-down-refresh’;来结束刷新
- 微信小程序中页面跳转用组件
<navigator>
时点击会出现阴影,影响用户体验,设置属性hover-class="none"
就可避免 - 微信小程序中复选框事件无法触发,checkbox和checkbox-group是成对使用的, 事件需要绑定在checkbox-group上
- 运行项目时报错信息:缺少app-debug.js 文件。(若src-wx-app目录下无app-debug.json时,报错信息是缺少app-debug.json 文件。);删除掉dist目录下的app-debug.json文件
- 小程序中使用wx:if和wx:else之后。满足条件时数据仍未正常渲染,检查标签中是否wx:for 和wx:if 一同使用了。由于结构问题,else无法识别对应if;使用block标签包裹需要循环的标签,将wx:for写在block标签上
- 小程序中图片的服务路径可以在服务或者响应文件中拼接,最好不在
wxml
中拼接
控件
web+h5
- 柱状图控件渲染必须有值没有值就会报错,若不传x轴名字x轴就会显示undefined,y轴同理;传入空值报错信息
Cannot convert undefined or null to object
- 树状图控件渲染数据时数据格式有要求,一、必须是数组并且至少有三个字段 二、提供的数据中可以作为id的字段名,该字段用来标识每一个树结点 三、提供的数据中可以作为pid的字段名,该字段用来标识该结点的父结点 四、提供的数据中可以作为text的字段名,该字段用来在树结点上显示 五、提供的数据中可以作为title的字段名,该字段用来在树结点上标示title属性,鼠标在上面的时候弹出提示信息,当需要显示更多内容的时候有用
css
- 在css文件中定义
class
是结束符为}
在此之后不能添加;
错误示例为:.backeee{background: #eeeeee };
;如果是错误示例页面可以正常预览但是导出文件时报错,报错信息如{"msg":"Cannot read property 'isEmpty' of undefined"}