1、在已有数据的表中添加字段@Index设置索引需要注意。场景复现:1.有数据的表中需要增加一个字段2.刚好这个字段需要设置Index,而且是唯一的索引3.此时typeOrm自动更新表时,会报错,因为这个表中已经存在的数据的新字段为空,而你设置为唯一索引,会报错。解决方法:1、先设置@Index非唯一索引2、然后向表中已有的数据字段添加数据(唯一字符串等数据)3、然后设置这个表为@Index({unique:true})4、注意:同步本地数据库和远程数据库的时候也要注意这个问题。只能先同步非唯一索引的设置,同步表结构,然后添加唯一数据,再同步设置唯一索引。2、关于mysql中的时区问题在中途官网的typeorm介绍中有提到。不建议设置时区:'+08:00'。原因:你在mysql的datetime字段中存储的时间是多少,提取出来的时间是多少。当你设置mysql的时区时,保存的是东八区的时间,那么提取出来的时间也是东八区的时间。按理说修改MySQL的时区会对旧的datetime数据产生影响。为什么要存储UTC时间??因为——国际化!!想象一下,有一天,我们的程序在全世界运行。如果程序总是获取当前时间并存储,当你访问伦敦的一个节点,或者加利福尼亚的一个节点,或者新加坡的一个节点时,如何协调和统一岂不是很乱?知道了??但是,如果我们都使用UTC时间存储,当世界上每个节点的时间显示在一个时区时,所有节点的UTC时间只需要加减相同的数字即可!命令补充:1.Linux命令:date+"%Z%z" //查看容器中当前操作系统的时区date-R//查看容器中当前操作系统的具体时间2.mysql命令:setglobaltime_zone='+8:00';冲洗特权;//在mysql中设置时区,相当于orm框架中config设置中的建议解决方案:UTC时间前端转换为东八区时间:formatTime(utc_datetime){//转为正常时间formatyear-month-dayhour:minute:second//如果你的时间已经是正常的时间格式并且后台已经转换过了,那么跳过这行代码varnew_datetime=utc_datetime.split("T")[0]+""+utc_datetime.split("T")[1].split(".")[0]//处理成时间戳timestamp=newDate(Date.parse(new_datetime));时间戳=时间戳.getTime();时间戳=时间戳/1000;//加8小时,北京时间比utc时间多八个时区vartimestamp=timestamp+8*60*60;//将时间戳转换为时间varn=parseInt(timestamp)*1000;varD=新日期(n);varyear=D.getFullYear();//四位数年份varmonth=D.getMonth()+1;//month(0-11),0是Januarymonth=month<10?('0'+月):月;varday=D.getDate();//month某一天(1-31)day=day<10?('0'+天):天;varhours=D.getHours();//小时(0-23)小时=小时<10?('0'+小时):小时;var分钟=D.getMinutes();//分钟(0-59)分钟=分钟<10?('0'+分钟):分钟;varseconds=D.getSeconds();//秒(0-59)seconds=seconds<10?('0'+秒):秒;varbeijing_datetime=year+'-'+month+'-'+day+''+hours+':'+minutes+':'+secondsreturnbeijing_datetime;//2020-10-1115:32:06}三、修改文件夹权限1.chown-Rroot:root./redis修改当前路径redis文件夹下所有文件的归属,用户root:用户组root2,groupsxxx用户查看xxx用户的权限组4.泛域名解析使用通配符*(星号)作为子域名,实现所有子域名指向同一个IP地址(这里IP必须是独立IP)在域名前加任意子域名,即可访问指向的WEB地址。即客户域名a.com下设置的所有*.a.com都解析为同一个IP地址。比如客户设置b.a.com,会自动解析到和a.com一样的IP地址。比如我的域名是abc.cn:比如做一个*.abc.cn的二级域名A记录指向222.222.222.222,那么当访问者输入“123.abc.cn”或者“123.123.abc”.cn”甚至可以是任何字符,如“!@#.$%$.6543.ww.a.abc.cn”,可以指向IP地址222.222.222.222。5.egg-socket.io中的sticky模式和nginx中ip_hash配置的区别可以在issue框架中看到是在Cluster模式下启动的,而socket.io协议的实现需要sticky特性的支持,否则无法在多进程模式下正常工作。由于socket.io的设计,server在多进程下必须工作在sticky模式,所以需要给startCluster传递sticky参数
