飞道科技

飞道科技文档总汇

问题汇总

暂时将问题分为三类:服务、开发、控件

服务

数据库操作

  1. 数据库操作的原子操作在分类@feidao/web/atom/nodejs/db目录下;
  2. 操作分为:单表查询、复杂查询、数据操作(增、删、改)
  3. 服务中的spaceidsystemidproductid只能通过config引入,不能写为固定值
  4. 服务中atom函数的参数为固定模板
  5. 在服务中定义接口时,接口的名称I@表名-驼峰式@,例如表名为order_info,定义的接口名称为IOrderInfo

单表查询

  1. 实例化db/query原子操作传入了systemid参数,即使用此实例化所查询的表必须存在传入的systemid中
  2. 可以一次查询多张无关联表的数据,并尽量少的调用exec操作
  3. 查询表数据时,必须确保传入的表名、字段都是正确的
  4. 查询的字段只查询当前页面使用到的字段,无关字段不再查询
  5. 执行exec之后,若还需查询其他同一个systemid下的表可以继续使用当前实例化后的方法

数据操作

  1. 实例化db/operate原子操作传入了systemid参数,即使用此实例化所操作的表必须存在传入的systemid中
  2. 数据操作尽可能少的调用实例化后的exec函数
  3. 在调用exec之前存放的增删改操作,在调用exec时一次性操作数据库,即操作成功则全部成功,若有一个数据操作失败则此次操作全部失败
  4. 多次exec操作的数据则无法实现事务
  1. 新增数据方法只能新增一条数据,若需要新增多条数据则需要调用多次新增方法
  2. 新增方法中传入的新增数据可以不传入_id
  3. 新增方法必须确定传入的表名正确
  4. 传入的新增数据必须确定传入的字段名正确
  5. 传入的新增数据必须确定传入的字段数据符合数据库字段类型
  6. 传入的新增数据必须确定数据库中此表所设置的必填字段有数据

  1. 删除方法必须确定传入的表名正确
  2. 删除方法传入的第二个参数为删除条件,即满足传入条件的数据都会被删除,用之需谨慎

  1. 修改方法必须确定传入的表名正确
  2. 修改方法传入的第二个参数为修改条件,即满足传入条件的数据都会被修改
  3. 修改方法传入的第三个参数为修改内容
  4. 修改内容中禁止传入字段_id

服务调用

  1. 调用服务时必须确定传入的服务名称(包括路径)正确,传入的参数格式必须和服务中定义的参数格式一致
  2. 尽可能减少服务调用
  3. 可以在服务中引入其他已有的服务

导出服务

  1. 导出服务请查看导出文档

开发

  1. 升级vscode版本到1.30.1之后,在vscode左侧点击方块插件菜单
  2. 在搜索框中输入feidao,安装搜索到的feidao-tools插件
  3. 通过插件完成的功能则不再陈述

web+h5

  1. 将所有的响应文件na***.ts和a***.ts引入到对应的n.ts和b.ts文件中
  2. 将引入的响应变量定义为响应文件名
  3. 将引入的响应变量放入actions
  4. 新增弹窗中用户输入的数据需在代码中控制删除
  5. 页面跳转尽可能使用a标签
  6. 组件A调用组件B的事件a000并传入参数,在组件a000中解析传入的参数时可以先将args打印或加断点调试,确定参数结构后再进行解析,避免解析结构不对造成的其他问题
  7. 在使用原子操作日期dt/format、dt/parse做日期处理时,传入和获取到的时间戳都是毫秒
  8. 原子操作有分类控制,不同分类即nodejs、browser、wx、ali下的原子操作不能混合使用
  9. 在使用原子操作时,在原子操作方法之前全部加上await关键字
  10. storage、global、local三个分类原子操作区别,storage存放在本地缓存,在不手动清除的情况下会一直存在;global存放在当前页签中,在不手动清除的情况下关闭当前页签或者关闭浏览器,之前存放的数据全部清空;local存放在当前组件中,不同组件不能相互使用
  11. 原子操作whoami获取到的数据存放在了global
  12. 调用dsd服务必须确保传入的参数格式和要求的参数格式一致
  13. 在事件响应中获取节点对象,通过args[0]获取事件对象,事件对象的target、currentTarget区别,target为当前点击的节点对象,currentTarget为当前绑定事件的节点对象
  14. p块中dot模板使用方法dot
  15. 在代码中所有涉及到地址的都不能写成固定值,而是从config中引入
  16. 在js中进行小数计算时使用金钱计算原子操作
  17. 按钮绑定点击事件,data-feidao-actions=”click:a010;”事件绑定时不允许加分号
  18. tpl.ts内容不能为空,为空时会报错误this.childNodes.map is not a function
  19. 必须使用原子操作render渲染包含事件的内容
  20. 将行数据通过JSON序列化之后放到html上时,如果数据中包含空格,html则认为此属性值结束,再通过节点获取的行数据不是完整的数据,无法进行JSON的反序列化;可以将序列化后的数据编码,获取节点内容先解码再进行反序列化
  21. ts的基本数据类型typescript
  22. 禁止在响应文件的函数外定义变量
  23. 使用正则regex模糊查询时,若查询的内容包含正则的特殊字符().*\^$+[?{|时,需要添加转义\\;例如查询"marking_account_name":{"$regex":".*(.*","$options":"i"},正确写法为"marking_account_name":{"$regex":".*\\(.*","$options":"i"},否则报错信息为Unclosed group near index 5 .*(.*;只有特殊字符需要添加,其他内容不需要转义

微信小程序

  1. 在开发中,微信小程序开发工具默认会对请求地址进行校验,需将微信开发者工具右侧详情选项中不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书这个选项勾选上
  2. 微信小程序中向Echars图表通过服务传递参数后无法正常渲染,解决方法:在 onLoad 里面获取数据,存放在Page.local里面,然后在 onReady 里面调用 init() , init调用定义的函数那个setOption(),将数据当做参数传过去
  3. WX小程序中使用Echarts柱状图,使用X轴作为类别,名称过长时会不显示;使用Y轴展示类别,X轴展示值,同时使类别名称尽量精简
  4. 小程序中使用第三方控件,使用构建npm功能时部分文件不能构建;重新安装最近能正常使用的版本
  5. 使用parse原子操作转换时间戳时,如果转换的日期分隔符为‘-’时,本地和安卓系统测试没问题,IOS系统页面上的值会显示NAN;原子操作所得结果不能被IOS系统正确识别;将要转换的日期分隔符变为‘/’,可以使用 日期.replace(/-/g, ‘/’)
  6. 小程序真机测试下拉刷新数据功能时,刷新提示的样式会一直停留在页面上;在操作下拉刷新的事件里使用stop_pull_down();原子操作路径import stop_pull_down from ‘@feidao/web/atom/wx/app/api/interaction/stop-pull-down-refresh’;来结束刷新
  7. 微信小程序中页面跳转用组件<navigator>时点击会出现阴影,影响用户体验,设置属性hover-class="none"就可避免
  8. 微信小程序中复选框事件无法触发,checkbox和checkbox-group是成对使用的, 事件需要绑定在checkbox-group上
  9. 运行项目时报错信息:缺少app-debug.js 文件。(若src-wx-app目录下无app-debug.json时,报错信息是缺少app-debug.json 文件。);删除掉dist目录下的app-debug.json文件
  10. 小程序中使用wx:if和wx:else之后。满足条件时数据仍未正常渲染,检查标签中是否wx:for 和wx:if 一同使用了。由于结构问题,else无法识别对应if;使用block标签包裹需要循环的标签,将wx:for写在block标签上
  11. 小程序中图片的服务路径可以在服务或者响应文件中拼接,最好不在wxml中拼接

控件

web+h5

  1. 柱状图控件渲染必须有值没有值就会报错,若不传x轴名字x轴就会显示undefined,y轴同理;传入空值报错信息Cannot convert undefined or null to object
  2. 树状图控件渲染数据时数据格式有要求,一、必须是数组并且至少有三个字段 二、提供的数据中可以作为id的字段名,该字段用来标识每一个树结点 三、提供的数据中可以作为pid的字段名,该字段用来标识该结点的父结点 四、提供的数据中可以作为text的字段名,该字段用来在树结点上显示 五、提供的数据中可以作为title的字段名,该字段用来在树结点上标示title属性,鼠标在上面的时候弹出提示信息,当需要显示更多内容的时候有用

css

  1. 在css文件中定义class是结束符为}在此之后不能添加;错误示例为:.backeee{background: #eeeeee };;如果是错误示例页面可以正常预览但是导出文件时报错,报错信息如{"msg":"Cannot read property 'isEmpty' of undefined"}