项目开发中遇到的问题总结

发布时间 2023-10-20 11:24:02作者: 一只特立独行的鸭嘴兽

1、echarts图表问题

数据库中存储结构为横向一条数据包含体重,身高,血糖血压,添加事件等数据

而前端需要纵向以属性为y轴,事件为纵轴,分别产生多张表格。

需要前端使用javascript进行遍历,使用到了map方法

this.status = response.data.data
console.log(this.status)
const xData = this.status.map(obj => obj.statusDate);
const yHeightData = this.status.map(obj => obj.statusHeight);
const yWeightData = this.status.map(obj => obj.statusWeight);
const yBloodPressureData = this.status.map(obj => obj.statusBloodpressure);
const yBloodSugarData = this.status.map(obj => obj.statusBloodsugar);

将数据遍历,并将吗,每个属性单独产生一个数组。

2、聊天信息显示问题

(如何分辨哪些是本人,哪些是对方发送的)

两方发送的聊天信息存储至redis数据库,存储方式为 (发送id):(接收id)

新增一个对象,不但包含聊天信息,还包含识别发送信息的类型(0代表自己发出,1代表对方发出)

3、导入spring security依赖后出现的问题

(1)跨域策略失效问题

请求顺序

image

  • 首先经过过滤器,包括web filter和security filter

  • 再经过Dispatcherservlet

  • 再来到拦截器

  • 最后才到controller

spring实现跨域解决主要是通过拦截器(两个注解实现)和过滤器,那么为什么会失效呢, 主要有以下几点

  • security 是基于过滤器开启全路径拦截(需要拦截的),包括options请求

  • 注解是基于拦截器实现,在security filter之后,所以options请求会被拦截,最终不起作用

  • 过滤器方式不生效 是由于它的优先级在security filter之后,所以也会被拦截,最终不起作用

解决方案:

设置跨域过滤器优先级为最高

@Bean
FilterRegistrationBean<CorsFilter> cors(){
    FilterRegistrationBean<CorsFilter> registrationBean = new FilterRegistrationBean<>();
    CorsConfiguration configuration = new CorsConfiguration();
    configuration.addAllowedHeader("*");
    configuration.addAllowedMethod("*");
    configuration.addAllowedOrigin("*");
    configuration.addExposedHeader("*");
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**",configuration);
    registrationBean.setFilter(new CorsFilter(source));
    registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
    return registrationBean;
}

(2)发送请求返回security登陆界面问题

解决方案:

在启动类上取消SpringBoot的SpringSecurity自动配置

@SpringBootApplication(exclude= {SecurityAutoConfiguration.class })

4、页面间传递数据问题

普通数据可以使用localStorage.setItem进行数据的存储

但是数组对象经过localStorage.setItem之后会失效

解决方法:使用JSON.stringfy转化为字符串之后进行传递。