00:00
咱们的下一个功能啊,要去写自动回复,这自动回复呢,是咱们微信公众号呢,最常见的一个功能,也就是说用户啊,发送于某一些消息,我对应的是不是响应给他另外一些消息内容啊,啊这个功能呢,非常常见,所以说我们要去做一下,那我们要做这个自动回复功能,我们该有哪一些步骤需要去做的呢?我们要做这个功能了,那我们首先要做什么事?啊,其实自动回复很简单一句话,就是我根据用户发送过来内容,我是不是响应给相应的数据给他,好,那么我首先就要获取到用户发来的内容,是不是他到底是什么内容,我根据这个内容是不是才能响应给他相应的数据啊,诶所以说我首先要获取到用户的消息,然后呢,第二步呢,再根据用户的消息是不是返回相应的内容给他,诶也就这两步,所以说呢,我们接下来呢,就把这两步给写了啊,虽然简单的两步呢,但是实现起来呢,它较为麻烦,那我们来把零三这一步呢,复制一份,叫做零四这一步呢,我们去做我们的自动回复,那自动回复拆分开来呢,我们第一步叫做接收用户发送过来的消息,咱们课堂一步步写啊。
01:25
好,来零四,然后复制完成之后呢,我们接下来呢,就去写咱们这里面的内容了,那我这个奥斯通肯保存下来,好零四是不是这些文件好,我们在写自动回复的时候呢,我们就要去首先去写我们去接收用户的消息,是不是来接收用户的消息呢?在A模块中,我们要去写在这里面呢,我们来给大家说一下啊。在这下面吧,在这里在这下面我们去写一下啊,微信微信服务器也是微信官方的服务器,他呢会发送两种消息给我们开发者服务器,两种类型的啊,两种类型的消息给开发者服务器,哪两种类型的呢?啊,第一种是叫做get请求好,第二种呢叫做cos请求好,Get请求它做什么事呢?它就做我们之前写过的逻辑,专门用来去验证服务器的有效性,他呢专门做这些事的,也就是说当微信服务器发送guest请求到我开发者服务器上来,说明他是不是就是做这个功能的,就做这事的好,他也会发送POS系求,那POS系用在干嘛的呢?啊微信服务器回。
02:51
可将用户发送的数据啊,以POS请求的方式转发到开发者服务器上来,也就是说我们到时候呢,是不是要通过判断它的请求方式,如果是POS请求,我是不是要想办法去接收到这个相应的请求数据啊,哎,要去接收到这个消息,好,那我们要去判断了,怎么判断呢?这里告诉大家啊,IQ上面有个属性叫做method method什么呢?请求方式是不是,诶如果它等等于get,说明它是不是要做我的验证服务器的有效性啊,同样的我这里呢,诶,我这里能不能用判断它是发送的是POS机哦,行不行,为什么呢?啊,因为我们的method的不止POS跟。
03:51
是不是,所以说在这里呢,你还得去精确一点,叫做Iq.method等等于po才行啊,其他请求呢,我就不管是不是其他起求就不管好,这两个一定要写,写完之后呢,我们来整啊来整那么也就意味着我来看一下啊,我呢把这些东西写简单一点啊,这是我们复杂版本,是不是简单版本怎么写呢?
04:15
他呢,其实就几句话,我呢就最终定义生成的这个SR定义生成这个东西,来看一下简单版本是怎样写啊,就是把我们写的这么步骤呢,全部放成一个步骤是不是好,第一个组合在一起是不是点short排序啊,排序完之后呢,我要点DRY是不是拼接在一起,拼接在一起啊注意Joy方法呢,要传个空的东西,是不是空串好拼接在一起呢,之后呢,要将整个这个串的进行啊加密上一加密是不是好,最终形成的是不是就是我这个想要的数据啊,想这个东西,所以说上面这些东西呢,全部都可以去掉了,是不是好,我们把为了注释少一点,所以说我就去掉了很多东西啊好,然后这一块是不是要去判断啊好,也就是说呢,来看啊,这沙一加密,我留在这,留在这啊,我把这个东西呢,放在这里去判断。
05:09
是不是如果相等说明消息来自微信服务器,我返回这啊,如果不相等就是返回error,好就是这样处理啊,同样的,如果再来个要其他其他请求的话呢,我也返回一个error,因为都不是我要接受的,是不是就是说都返回一个error啊,好,然后呢,来到这里面,进入到这呢,说明是微信服务器他做的这件事是不是,所以说我是不是要想办法接收到啊,接收到啊,但是呢,在这里呢,我们还要做一个处理,我们还得验证,一个是验证消息来自于微信服务器,咱们上面是不是做了一个这样的验证啊,咱们下面呢,同样也做这个验证,虽然它发送的是POS请求,但是呢,我们会发现它除了请求体中有参数的话呢,它的查询字符串也有参数,也就说呢,他们都在发送请求的时候,是不是都会有这些参数啊,都有这些参数,不管是POS请。
06:10
原还是盖都有这个函数,所以说呢,我通过判断这个值也能知道它到底是否来自于微信服务器,如果不相等,说明它是什么呢?不相等说明消息不是微信服务器的,是不是说明消息不是微信服务器,所以说我这里的RS点是不是也可以摁这个EO啊是不是好,然后如果走到下面,说明我这消息是不是来自于微信服务器啊好,所以说在这下面呢,我们就接收一下啊,可以给大家打一下这个ipd query啊,可以看一下它这个显的消息消息,然后呢,我们来看一下是否是这样的呢。我们来验证一下啊,好,我们呢要去预习一下这个APP啊,是不是右键run一下,启动一下服务器,OK,没有问题,再提升下work也没有问题,看这里是不是online啊,在线状态没有问题,好,那我这时候是不是要发送一条消息,看一下,是不是我如此所说的看一下最终我这个值是不是会被打印出来,好,这只是query啊,我并没有拿请求体的数据,是不是,所以说最终的数据呢,它并不会打印出来啊,只会打印这个query查询上的信息,是不是看一下我们呢,这里打开我的微信,我发一个消息啊。
07:26
来我在这儿呢,是不是可发送消息,然后呢,这个消息呢,就是我的测试接口号啊,注意我们要去测试这个微信,我们这个接口号是不是那对应的呢?我要在这里在这里进行扫码关注才行啊,比如大家呢,到时候呢,你要去测试你的这些信息的话呢,你要在这里扫码关注啊,你千万不要用之前的,我这里面是不是有个二维码是不是,诶这个二维码没用的啊,咱们现在是测试号,是不是测试号呢?需要在这里关注才行,关注之后呢,你就来了一个什么叉叉测试接口,接口测试号是不是好比方说你发个消息。
08:05
我发送消息之后,微信服务器接收之后,他是不是会转发到开发者服务器上来啊,所以说在这里呢,你看我是不是已经接收到了,已经接收到了咱们现在的信息,然后呢,你会发现这个信息呢,它呢一共会发送123次,是不是三次,然后信息呢,比起我们之前来说的话呢,它是不是多了个open ID啊,这个open ID呢,就是你发送消息的这个用户的这个ID啊,我们可以知道一下,好一共有这四个参数,是不是前面这三个是一样的,所以说我们就说了,后面最后一个参数呢,叫做用户的微信ID,那我们通常简称为open ID,这个ID呢,每个用户都是唯一的,是不是每一个用户都是唯一的啊,好,这是这一块,好这个query呢,我们其实主要用它来就是做这个验证服务器的,有些验证这个消息是否来自于微信服务器,是不是那做了这一层验证之后呢,通常我们就不看了。
09:06
就不需要它了啊,我们主要的是它请求体的数据,主要是他为归这个用户发送的数据,是不是主要是这一块,那么在这里呢,我们还讲一个问题,就是刚刚它是不是会返回三次响应啊好,这里我们说一下啊啊,如果咱们开发者服务器没有返回响应,没有返回响应点微信服务器,你看咱们是不是没有去返回响应啊,所以说没有反回响应,那开发咱们微信服务器呢,会发送三次请求,是不是会发三次请求过来。会发出三次起球过来,那这样的话呢,会有点不太好,不太好的地方在于啊,就是他呢,每次发出三次请求,对于我来说的话呢,就是这个接口呢,被调用了三次。
10:10
那就无形之中呢,就会当你这样反复的测试测试测试,那这时候呢,请求数量累积起来的话呢,很可能就会达到你的每日的最大限制了,所以说呢,我们最好啊,我们中间业务逻辑是不是还没写完成,那我在没写完成之后之前呢,我最好是S点。End end等于空的就可以了,我这样是不是快速返回一个响应啊,那这样就够了啊,如果你不返回响应的话呢,它到时候呢会发送三次请求,这样不太好,当你返回和响应之后呢,它就不会发送三次请求的,它就只会发送一次啊,就是这样去解决的,就是在最后呢,最好加上一个is d的,等我们写完之后啊,就把这个给去掉啊,写完之后再把它去掉好。所以说要注意这一点啊,待会大家都得写上,那在这里呢,我们一个去处理,首先呢,我们想办法去接收用接收啊这个请求体中的数据,是不是我们要想办法去接收请求体的数据啊,在这呢,我们要知道就是在这呢,并不能去通过那个什么玻璃pass那个东西逐渐进去解析它这个东西啊,是个流逝的数据。
11:20
这个流失数据呢,你没办法通过那个东西解析,所以说呢,你需要去定义特殊的方法才能拿到你具体的数据。那在这呢,我们来去专门去定义一些相应的内容,去写这个东西啊,相应的内容,比方说我在这里写一个工具包。写工具包,比如说叫做U,在这里面的的话,就是一些工具函数,然后呢,比方说在这里面呢,再新建一个文件,就叫tool,就做工具函数。好在这里面呢,我们去一个写咱们的工具函数啊,这就是工具函数吧。在这里面呢,我去向外报露出去一个对象,这个对象上面有很多很多方法,那我通过定义这些方法来去实现我这些功能,好来到这里我是不是要获取到这个请求地的数据啊,那我待会呢,我就定一个这样的方法啊,比如说我最终获取的数据呢,我拿到它,它这个数据呢,其实是我们叫做一个插ma数据,待会我们可以看啊,比如说第一个方法就是get用户的代法数据,那这个数据的方法呢,其实是个异步的方法,SYC啊,待会我们看到一个这样的方法是不是好,那我们对应的我们是不是要想办法去把这个方法给实现了,这个实现呢,我就在这个tool里面去写。
12:37
好,它呢是一个函数是不是啊,这就是我们这个函数的对象的简写函数的一种,是不是简写我这个函数的方式啊,好在这里面我要做什么事呢。怎么去接受流失数据呢?我们来写啊,接受流失数据呢,你要通过这个IQ这个对象,这对象呢去绑定一个事件叫做data塔事件,而通过这个绑定这个data塔事件呢,它到后面呢,每一次这个流失数据过来的时候,就会触发这个事件,从而呢,将这个当前发送过来这个数据呢,注入到这个回调函数中,所以说你在这里呢,就能够每拿到每一次的这个回返回过来的值了,但是呢,它可能会返回多次,是不是比方说有三次,那么呢,我对应是不是要把它这三次的所有的返回值全部组合起来啊,全部拼接在一起才行,是不是全部拼接在一起才行,所以说呢,我们最后呢,我在外层定一个它的初始化的一个。
13:39
空串是不是,然后在这里,诶顶德塔可能不太好啊,顶一个插妙德塔。然后在这里面呢,将它的值呢,进行是拼起来啊,拼起来当然在拼起之前呢,我们看一下这个data塔是不是我们想要的这个四符串数据,好最后呢,它呢是不是会一直去拼接啊,但是呢,我们是不是知要知道它什么时候才能结束啊,他要结束的话呢,你也得给他绑定一个事件。
14:09
绑定一个世界叫做,哦,绑定什么世界呢?比方叫做。Close事件,这close事件会在什么时候被触发呢?当数据接收完毕时啊,会触发当前事件,当数据接收完毕时,触发当前事件的话呢,也就意味着是不是没有在没有数据再返回回来了,所以说我在这里是不是要想办法把这个数据给返回出去,返回出去好,这里呢,我们也说一下这个事件呢,是。啊当啊,流失数据传递过来的时候,会触发当前事件,然后会将数据注入到回调函数中,注入到回调函数中,好,咱们是不是做了一个这样的事啊,然后另外呢,我们会发现当前咱们这个。
15:07
呃,模块中啊,这个IQ对象有吗?有没有没有,是不是,所以说呢,到时候要使用的时候呢,你得给我传进来,我才能用得到啊,要传进来才能使用上,然后另外呢,我们会发现整体这个方法呢,它是一个同步的还是异步的,异步的,因为我这个世界是会被触发多次啊,他呢也不知道什么时候完成,正是因为他这个义务的,所以说呢,我最好呢保证他执行呢,我一定要去包装一个promise对象才行,否则的话呢,我是拿不到我想要的值的,因为呢,我要我在后面呢,一定要等到它执行完毕之后,我才能接下来处理它的数据,是不是,所以说一定要用pro项包装一下,然后在这里面呢,当它成功的时候,调用so方法,将我这个获取到的这个插表数据是不是返回出去啊,返回出去,好,对应的呢,我们会发现来到这个这里这个函数中,我这个方法是不是还没引入啊,那我得引入在上头去引入这个方法。
16:11
引入这个tool模块啊,To模块cos,同样的,我需要里面的其中方法是不是我通过解封赋值拿到啊,点点斜杠的U下面的to是不是。好,然后呢,它的方法叫做get user data think,一个一步的方法是不是好,现在呢,这里是不是可以用啊,要一个值叫做。REQ是不是就是这个我前面在上面啊,是不是在这定义的参数啊,就传到它啊,好除,然后我们会发现它是不是个异步的方法,返回值是一个promise对象,那我想要拿到promise对象的返回值呢,我得。怎么办呢?我没有办法,是不是点赞啊,但是我不想点赞,我就想这样拿到怎么办呢。
17:02
点内呢,会导致我又陷入那个回调地域,我不想要。我呢,将它改造为函数,通过位关键字,是不是能将这个promise对象的返回值最终传递到我左边来啊,是不是,所以说呢,对应的这里是不是报错了,因为我当前函数是think函数吗?不是,所以说我要改装成think函数,现在是不是一个普通函数前面加一个a think就可以了,好,这时候呢,这也是think函数的一个作用啊,它能够将pro项的返回值呢,最终直接通过with关键字呢,返回到我左等号,左贝塔是不是返回到这里,所以我下面呢,是不是就能拿到的X ma贝塔,那我们把它按一下,看下是不是我们想要的数据啊,好,现在呢,我们就来测试一下这个数据究竟是不是我们想要的。来123回车啊,我们要重启服务器,是不是来一次啊,重启服务器一下,再试一次,我呢再返回一次,123回车,好,这时候呢,来看它呢,这个数据呢,每一次都是一个buffer,所以说你能直接拼出来吗?不能,是不是说你在这里呢,还得调用塔点。
18:16
怎么将办法转换为字符串?调个它的是不是有to string方法,调它string方法是不是将八法对象转换为字符串啊,这里呢要注意就是读取的数据是把数据是不是B f1啊,那我们需要将其转化成字符串,是不是才能拼串啊,转化成字符串啊,所以这个代塔我就不看了,最终是不是转化成字符串拼接起来啊,拼接起来是不是最终当它接收完毕的时候,将这个拼接完成的整体数据是不是返回出去,好,这时候我们看一下这个插妙数据到底长啥样,重启再来一次123回车。
19:04
好。呃,看一下这个接收数据的情况啊。嗯,来看一下,我这是没没出问题,我再发送一次,他这里是没有没有响,没有响应啊,我再重启一下服务器看一下啊,然后再来一次123回车。好,这里没有打印结果是不是,我看一下是不是哪里没有写哪里写错了啊,来看一下这个A模块是不是在这里我给打印出来了啊,打印出来了的话呢,应该是没有问题的啊,但是呢,我现在没有拿到返回值是不是?呃,也就是说这里呢,可能存在某些问题,好,这样的,我这里在前面我打印输出一句话。啊,如果前面这个打印出错的话呢,说明我这个请求已经来到这一步了,他是不是走到下面来了,那说明呢,如果下面没打印出来,就是这一这一步,当前53啊程序挂在这里了,是不是我们看一下重启服务器。
20:00
上一次123回唱。好,有这个打印说明,是不是这个方法有点问题,点进去看一下哪里出了问题呢。好,这是一个方法,方法的返回值是个promise项,Promise项呢,在close方法里面调用so这个值是不是好,也就是说呢,它在这里,这个close方法它是不是没有触发,我们可以打印一下每一次的值是不是,然后呢,在这里再打印一下这个close方法,看下有没有触发,是不是close方法好,在这里看一下啊。来重启一下服务器,再来一次吧,456回换一次啊好呢,这个data呢,我找到了是不是,但是我data要点输出率,看一下它最终转换值,我先不看这个,我就看它输出率方法,再看456回撤,好,其实这个值呢,我已经有了,是不是你要值呢,我已经拿到了,但是呢,它最终没有调用这个close方法,是不是没有调用啊,没有调用close方法,那就是或许是摁的方法,是不是我们看一下摁的方法,来再来一次啊,重启服务器来一次换一次789吧回撤。
21:15
好,看一下摁的方法有没有调用呢?有没有调用,有是不是也就是说在这里呢,不是,可方法是我的按的方法,是不是在按的方法的时候呢,才能拿到我想要的返回值啊返回值好这里呢,我就不打印这个输出了,这时候呢,就发现我这返回值是不是会来到我这下面啊,就会来到了啊来到这里这个值呢,我不打印了,好我们看一下这个返回值啊,这个呢就是一个。什么数据,是不是一个很典型的插没数据啊,他这都给你写出来了,是不是插没啊,就是个很典型的插没数据,然后我们来看一下这个插秒数据中又有什么内容啊来第一个呢,叫做to use nameme,这是什么呢?这意味着是不是我这消息发送给谁啊,发送给谁?那发送给谁呢?这是开发者的ID。
22:10
开发者ID是不是我用户发送给我的开发者的,所以叫做to use STEM,是不是to user nameme,这是开发者的ID,也就说这里面的这个数据啊,是不是我开发者的ID啊,开发者的ID啊,只是这一块,而且这个ID呢,你看是不是G什么C f1对一下啊。是不是就是这个ID值,就这ID值好,这是开发ID,下面这个呢?这是谁的ID,是不是用户的好这个呢?我们称之为open ID,是不是用户的open ID,前面我们是不是见过啊,是不是这个东东用户的open ID好,下面的create time呢?是我的发送的时间戳,是不是就是发送的时间戳。
23:02
然后下面这个message time呢,是发送的类型message type世界类型是不是发送的消息类型,这里呢,它的消息类型是不是文本啊,说明他发送的是不是文本啊,这里呢,到后面我会知道除了文本以外呢,用户还能发送图片,语音视频等等文件,是不是好对应的每个发送的东西呢,这个message type的类型呢都不一样,所以说到后面呢,我们都得出理他,然后这里面下一个这content是什么呢?内啊发送的内容了,是不是发送内容是不是这个789啊发送的内容好,然后最后一个message ID什么呢?消息ID是不是消息ID,这个消息ID呢,就是我微信服务器会默认保存,比如说三天。这个用户发送的数据,然后通过此ID3天内是不是都能找到啊,三天内就能找到。
24:07
消息的数据了,好三天呢。是不是就没了,默认只保填三天嘛,三天后呢就消失了啊,是这样的,所以说如果你想在三天内要到用户的消息内容的话呢,不妨可以记住这个啊,不过呢,一般都不会去记,都不会记得啊,三天后呢,就会会被销毁,是不是就被销毁啊,这是这么一回事,好这以上呢,是不是就是我插秒数据的整体的内容啊好了,那现在这个问题就是他发送给我一个站查秒格,是我能直接使用吗?我用不了啊,是不是我想要拿到这些每一个字段,其实主要的就是这,可他发送的内容是不是,但是你给我一个这样长的一个字符串,我根本就拿不到这个内容啊。所以说呢,我们接下来要做成什么事呢?我要加这个插表数据怎么办啊。
25:03
解析为想办法解析为一个JS对象,这时候通过对象领取的方式,我是不是才能拿到数据啊,所以说呢,我们还做这一步啊,将插ma数据解析为JS对象,好我们呢,比如说第一个方法JS对塔等于咱们的这个比说pass。咱们的一个XL think啊,一个这样的函数X one c,待会呢,第一个这个函数去解析我的XL数据是不是,所以说这个函数呢,它要传个参数,要传什么呢。是不是将我之前的插票代他给传进来啊,待会是不是要解析它好,然后呢,它是个异步方法,所以说我待会还得加一个O,是不是返回啊,所以说呢,待会呢,我就在这个to里面把这个方法也给它定义出来,好,接下来再定一个方法,是不是这个方法好,他接受一个参数叫做差没。
26:00
德是不是好,怎么做呢,好在这里面呢,我们去借助一个库来去实现啊,这个库呢,名字大家看一下就知道了。来叫做什么名字呢?就叫这个名字查喵two JS啊,叉没two JS不是叉没2JS啊,叉没To Gs,这个二是代表着to的意思啊,代表这个意思啊,也就说很多英文单词为了简写,就是他觉得to这两个单词写起来太麻烦了,他用这个二代替啊,二代替所以说这里是叉l to JS是不是,也就是说这个库呢,专门是用来将叉L数据转换成JS对象的,是不是好,所以说我们要用它的话呢,就要得去下载my XL two JS。好,下载用它转一转啊,没有问题,没问题,引入之后呢,它上面有个方法叫做pass string解析字符串的方法,是不是好在这里面呢,同样的我们去调用它的方法,它的方法呢,第一个常用参数呢,是你要解析的这个XL数据,第二参数呢,是个配置对象,我们通常会写个这样的东西啊。
27:13
干嘛的呢?去除首尾两个混合是不是好,接下来第三个参数呢,是一个回调函数,回调函数中第一个函数是error,第二函数是解析后的德塔是不是,所以说我们在这里面是不是E没有问题,说明这个德塔是没有问题啊,如果有问题是不是有问题好,那咱们呢,为了保证它顺利执行下去呢,我们要做什么事啊,继续包呗,包装一层promise对象的JS,然后在这里面呢,去包装一层,当它没有问题的时候呢,我是方法将这个回解析后的data是是返回出去啊,如果它出了问题,又是电用方法,比如我说什么呢?什么pass上面think。
28:01
方法出了问题,然后再把这个问题的原因是不是给拼起来啊,是不是拼起来好,就是这个or的reject好,这样呢,是不是将这个方法给OK了,OK了啊,这是pass string这个方法我们呢,通过结合赋值的方式呢,是不是给提取出来了,提取出来了啊好,当前这个库呢,我们写下引入这个叉没。To JS他们专门就是将XL数据转化成JS对象的啊,专门做这件事的,所以说就是引入这个库好,对应的呢,我这里写完了之后呢,我记得要在这里面要记得先引入,是不是先入你才能够使用它,是不是引入它好再往下走,咱们呢,待会呢就看到我是不是会解析它,解析它之后是不是会返回这个值啊好,我们打印看一下啊,最终呢,能不能够拿到这个JS数据,同样呢,我来重启一下服务器,也来测试一下到底行不行啊来这时候呢,我们来输入一下,比方说输入个三三个一吧,回撤。
29:07
来看一下,最终呢,你看最后一个是不是它解析后的数据啊,有没有拿到,拿拿到了是不是现在是不是变成GS对象了,那么我们是不是通过对象连取的方式拿到,好现在呢,我们这一步完成了,已经马上接近真相了啊,那现在还有一个小小小的问题,大家看一下这个数据啊,有什么问题呢。它呢有一些我不想要的数据啊,这样的话呢,会导致到时候呢,我操作起来呢不太方便,你看它呢,最外层是不是在诶插没啊,这东西呢,我用得上呢,我压根用不上,我要的是不是它里面的值啊,我要的只是这个而已,所以说我用不上,第二呢,它的每个值都是一个数组,你看这里面是每个就一个值啊,我要的你这数组也没用,我是不是只需要你这个属性名对应的这个值就是这个值啊,不需要这个数组是不是,所以接下来呢,我们还要做一波啊,为了更好的今后去使用这个数据的话呢,我呢去格式化一下我们的数据。
30:16
将我们刚刚解析好的这个J是不是进行格式化,格式化一下啊,那咱们呢,也定一个方法,然后最终格式化的数据呢,一个message变量去接收这个格式化的数据,我就叫做。嗯,叫什么呢?Form是格式化的意思啊,Form好,去格式化写的数据是不是传好这个方法呢,它是个同步的方法,不用去加with,我们可以看一下form,我们去定义,我们其实就是无非呢,想想去掉那个叉ma,除了去掉那叉ma呢,我还要去掉那个数组是不是,所以接下来呢,我们在这里去写,在这写啊然后呢,我这里呢,定一个新的message,它的等一个对象,是不是出手化对象,最终呢,我是不是最后一步要把它给。
31:07
Return出去啊出去好在中间呢,是不是要写我相应的逻辑,写相应的逻辑,那我首先拿到这个JS的相关的内容啊,我呢将JS塔呢等于J塔点SHM。啊,写的错了啊,X ma是不是这一步是不是我只需要它里面的值啊,所以说呢,我先拿到它再说啊,再能获取这个X ma数据的对象,获取这个没这个对象啊,它呢等于我想要的一个对象,是不是我主要的数据都在这对象中啊好,这是第一步,好第二步呢,我们再去慢慢处理它,好第二步呢,我们可能会去为了防止这个数据没有出现错误,为了防止JS data它是个find的RD find的,它读取的时候是不是这里会报错的,是不是或者说它返回是空对象,空对象读取这个属性不存在属性是会返回RD find的,那么我们为了后面的方法不出问题的话呢,我们来去判断一下这个数据是否是我们想要的。
32:07
判断数据呢,是否是一个对象,判断它是否是个对象,在这里面呢,我们要判断它就是一这个JS。通过type of去检测就可以了,因为我们只需要判断它是否是对象就可以了,判断它是否等于object,如果是对象的话呢,我就处理,如果不是对象是不是到时候再去,我就把他这个返回一个控对象给他,可以吧网控制对象。大写是吧,大写是小写大写。大学吗?啊,你们都记错了,小写我们可以待会验证一下,好吧,来带大家写一下,你们是不是要去验证它到底是大写的小写,那我们可以在cons log是不是type of去检测一下,我就检测一个对象可以吧?回说小写的大写小写啊,那大家呢,不要记错了,那大写是什么时候返回的呢?诶,为什么会有大写呢?
33:10
大家为什么会记得大写是我们之前是不是讲过一个方法,叫做object.to string方法,点code调用,再通过slide方法去截取我这个字符串,它最终返回那个值才是大写的啊,这个方法不要记混的啊,Ta返回的它是小写的东西啊,好,返回的是小写,我们这样的好,这时候呢,说明它是个对象了,是不是好,我是不是要想办法去将对象里面的数据。里面的这个这这个数组给去掉啊,所以对应的呢,我在这里还要做什么事呢啊,我就得去便利这个对象了,好,大家告诉我用什么遍历啊,用for印for印啊,用for印去遍历,不管它是其他也好,我用for印遍历就可以了,然后呢,我可以拿到它的K值,是不是在这里面呢?来获取一下我这个属性的值,获取属性值,比如说我在这里let这个value等于这个GS塔中括号的P值,是不是好拿这个值啊,接下来我是不是要想办法对这个值进行处理啊,好在处理之前呢,可能会存在一些问题啊。
34:23
因为这个值呢,我们现在目前来看的话呢,它都是都是没有问题的,都是没有问题的,是不是,那可能会存在一些莫名的bug,就是它返回一个空数组。甚至呢,一个空窗。那这时候呢,我们最好是把这些空的数据呢给过滤掉,因为假设这个message ID是个这样的东西,我拿了它有有什么作用吗?是没任何作用啊,所以把这些空的数据呢,我们是不是最好是把它给过滤掉比较好啊,过滤掉,所以说呢,我们在这里呢,也做的是就是过滤掉一些空的数据。
35:02
也是空的数据呢,我就把它给不不排除就不不用了,所以在这里怎么去过滤呢?我首先去检测一下这个Y的值,它是否是个数组,如果是数组。再检测它的长度是否大于零,那这样首先第一个我检测它是否是速组,比如说我可以过滤掉它只直接为空串的值是不是好,这里测它长度为大于零,我就可以检测数组里面是个空串是不是,那就可以检测这个数来,就是把一些空的数据呢,想办法给过滤掉是不是,然后过滤掉。当它进入到这个判断中,就说明是不是这个数据是有东西的,说明它是个数组,并且它的长度是大于零的,说明里面至少有一个数据是不是,所以说呢,我们就在给这个message给它添加一个属性,属性的值为value的第一项值,是不是属性值为value的第一项值,这时候我message是不是就会有东西了,有东西了通过这遍历呢,我所有的合法的属性都会挂载到这个message对象上,最终呢,再把这个message对象是不是返回出去啊,我这格式化数据是不是就完成了?
36:22
啊,就完成了啊,这里面呢,就是将这个合法的数据啊挂载到啊,复制到就复制到这个message对象上,复制到这个对象上啊,然后最后呢,是不是将它返回出去,返回出去就可以了,所以说我们在这里面来看一下啊,最终返回的这个message data呢,就是我们想要的。我们看一下,最后呢,再重启下服务器啊,这个方法我们没有还没有引入,是不是还没有引入啊,好,再引入一下,引入之后呢,再重启服务器,好,最后呢,我们来看一下打印结果是否是我们想要的啊,这次呢回复个二二回上好的,那这块呢,好像没有反应过来,是不是包括前面是不是没有打印出来啊呃,我这服务器是不是出了点问题。
37:16
看一下诶,你看是不是接到这个错误了,他说这个连接是不是失败了,关闭了,所以说我们要怎么办呢?CTRLC终止掉啊,所以说呢,莫名其妙出现这个错误,你就只能重新开启它是不是好,重新开启它之后呢,还有一些东西要设置,又得换那个地址了,是不是好。那现在呢?我们现在问题在于它真的连接不上啊,超时了。哎,这是咋回事呢,我再一次啊。好,如果他超时的话呢,那我们可能就OK了,OK了,好OK了,没问题了,来把这个网址给复制一份,是不是复制一份呢?接下来呢,我们在这在这里面呢,也把它给修改一下,修改一下。
38:07
他说URL不合法,原因是你前面多一个空格,多了空格删掉提交好,没关系啊,第一次配置失败无所谓的啊,再来一次,他呢,有时候会这样配置失败,呃,再来一次吧,来给力一些好了,他呢一直说配置失败,我这服务器是不是也开了,我再看一下洛也没有问题啊,再来一次我就不信了,还是失败,我再来一次的同时呢,我还是打印一下两个值啊。我把这两个值打印一下,看一下是不是一样的,只要这两个值一样的,说明我就没有问题,是不是啊,那这两个值应该是一样的,我这啥也没改是不是啥也没改再来一次。成功啊,没有成功一样的是不是,那就没办法了,这时候你没有其他办法,你只能顶着去啊,好再来一次,好这一块呢啊,他们这让我有点无语啊,再一次啊,我把它换成。
39:19
是不是HTPS协议再一次?也没用,再给他一次面子,好给他面子,他不给我面子是不是,那我就真没办法了,咱们呢,难道一直顶下去吗?也不行啊,咱们呢,就接着写吧,接着写啊,这一块呢,我们虽然出不来啊,但是实际上这个方法应该是没有问题的啊,实用方法没问题,只是我们现在是没办法测试啊,那到这一步呢,我们是不是做好了,接收到用户的数据,并且把这个数据处理好,成我们能够去写的东西啊,好,那在这里呢,我们先停一下啊。
我来说两句