00:00
那我们要保存下来,那么我们首先得有什么东西呢?我们要把数据保存下来,是不是首先我们就得有数据库,是不是才能保存啊,那么我们在首先呢,就得去想办法去建一个库,是不是来最小化,那我们呢,就是写数据库,新建一个模块叫做。AB代表database,是不是好在这里面呢?就一个叫做index啊好,Index咱们来去写,咱们数据库怎么写呢?我是不是要下载那个包啊,那么我们就得先NPM。I。只有SE mango是不是先下载它啊下载。我看一下行不行。好,应该有动静,是不是有动静的话呢,那我这个包呢,应该是能够下载下来的,如果可能慢一点,好最小化第一步我要去引入mangos,好引入mangos咱们一个写啊Co一个mangos等于require咱们的mangos好接下来第二步呢,也要做一个是叫做连接数据库,是不是连接数据库通过mangos点。
01:25
Connect方法是connect方法好,怎么连接呢?第一个参数是一个地址,是不是叫做mango DB冒号斜杠,斜杠LOCAL3000。27017啊,不是3000啊,三七是我们的服务器,是不是不是3000,下面是不是跟着你的要连接的数据库的名称啊,咱们要连接的咱们写一个吧,比方叫做S啊,咱们叫做movie吧。
02:02
咱们的硅谷电影是不是好,接下来第三这里还要传个参数,叫做使用新的ul解析器是不是?哎,你看只要你能记住中文,我相信英文你也能写的出来,好使用新的ul解析器,然后接下来呢,我们还会绑定一个事件,是不是把这事件监听通过mango.connection。Connection。点once,是不是点one方法去绑定一次性时间,好什么事件open时间,然后在时间的回调函数中呢?是不是它呢,其实有个参数叫error。如果。没有问题,是不是打印输出一下,呃,数据库啊连接啊成功了是不是好,这是不是我们之前写的好之前写的,那在此呢,我告诉大家,其实这个方法呢,它连接是一个异步的方法,它实实际上呢,并不是说能够,比如说它执行的这第四行,它就立马就连接了,他可能要等一等一点点时间,是不是才能连接成功了,好这是因为它是异步的方法,那么我们在后面呢,可能比如说我是不是连接完数据库之后,才能对数据库进行操作啊,那么好,那我们呢,就应该保证这个异步的方法,它执行完毕之后呢,才能操作数据库,否则的话呢,你如果这样做的话呢,很可能就是数据库我都还没连接成功,那我直接操作的话呢,就会直接报错是不是,哎,所以说呢,我们之前没有讲那个方法,但是现在呢,我们就要知道了,但这个异步的方法我就得。
03:47
把他给。就可以整体包装一个对象又一个啊。诶,我promise等于是不是好在这里面放置这个内容,然后呢,当它数据是不是连接成功,连接成功呢,除了打印这句话呢,我还得调用一个。
04:10
方法将改成功,失败的话呢,我就调用,是不是我说呢,数据库连接失败,然后呢,再把你这个原因呢给加上去,加上你这个L参数啊好,这是这样的,那最后呢,我是不是要将这个给暴露出去啊,所以说呢,将整体给啊,不是return没用的,咱们要将它给Mo,是不是等于这个创建出来的promise项啊,创建出来的将它暴露出去啊,那咱们呢,就是在原先的基础上呢,加了一层promise,是不是加一层promise好,这是连接数据库模块,接下来呢,我还借一个。Model是不是咱们的模式对象,那在这里面呢,我们新建一个文件啊,JS文件,比方说叫做热门数据的这个模式对象,模型对象啊好在这里面呢,我们接着写,我们呢首先要引入。
05:11
是mango,比如我们的mangos Co,一个mangos等于mango写错了,等于mon是不是好,等于什么呢?咱们的mango。好,接下来呢,我要获取什么呢?模式对象S是不是啊,这个对象啊,一个S等于这个。Mangos点啊点S。CH一样呗,是不是好,它没有提示,那么说明我这包是不是下载出问题了啊,没有问题,但是它没有提示是不是好,那应该没关系啊,好,现在有提示了,对不对?好它高亮了就说明有提示了,接下来呢,我创建我的约束对象,是不是约束对象好告比如一个呃,咱们的约束对象是热门电影的啊S的scheme对象,等于又一个sche码是不是好,这里面我们写啊,我们一共有很多很多数据,是不是我们把这数据呢拿过来看一下。
06:31
有很多个啊,我呢,把一条电影条目,西西把它拿过来吧。诶,这一条是不是一整条啊,CTRLC我们一共要保存所有的数据是不是,那我就得在这里面写CTRLV一个写这样它的它的类型应该是string类型的是不是,那这个writing的类型应该是number,然后呢,下面这个runtime类型是string啊好,下面也是如此。
07:01
这是不是也是string啊啊,到时注意。嗯,目前保存string,保存string就可以了,这是不是也string啊,String好这里呢,是不是这个地址啊,好大家想一想啊,最终我这个我要不要用上。比方说我页面上要不要用上这个地址。要是不是你想一想啊,你要它用它干嘛呢。你要他干嘛呢?点击的时候跳转到豆瓣上是吗?啊,我们说了就是到后面是不是自己写个电影详情页啊,那么我们是不是要跳转到自己的页面上,那我还需要这个东西吗。是不用了,这个东西是不是只在我们爬取数据的时候用得上啊,那我真正的时候需要用它吗?不需要,所以说我应该是不保存它,是不是我不会不应该保存它啊,好,接下来再写,这是不是一个string啊,一个string好这是不是豆瓣ID好豆瓣ID呢,我们这时候呢,最好是给他规定一下啊。
08:05
它呢,首先类型是一个。刚看的时候是不是个number number,然后呢,它的。给他一个唯一值,因为它应该是个唯一的,是不是unit q啊,给他一个唯一的唯数,是不是给他一个唯一值好,这里呢,它的类型是一个数组是不是,怎么写呢?数组里面值又是一个字符串是不是,那该咋写?来是个数组,是不是这里面只是个子,是不是这样写啊,下面这个呢,又是一个。呃,这个东西比较长啊,是一个string,是不是好把string复制。这叠是不是string好,最后一个也是一个string,诶是不是就得了,然后把这个给去掉,哎,咱们这个是不是建好了,建好了好除了这以外呢,我给大家再加两个,这两个呢,需要的一个是post。
09:06
Postage它呢是个string啊,这个值是干嘛的呢?到时候我的图片我这里是不是个image啊,我的图片呢,要上传到七牛服务器中,七牛中上传到七牛中返回的值。啊,提前先建好,因为你现在如果不建好的话呢,待会是不是用不上了,就用不了了,待会你还得删库,所以说我们提前建好啊,这里多了一个key,这个呢我们要知道,然后呢,再给他time吧。创建的时间啊,给这个时间呢,就是为了今后呢,我知道这个数据到底是什么时候的,如果今后你想更新的话呢,也简单通过判断的话,这个时间,然后呢,你比方说它是一天前的,或者是几天前的,那么你就设定一个比方说你是七天更新一次,或者一天更进一次,那么你是不是通过这个创建时间可以知道啊,或者time可以知道它的time类型呢,应该是。
10:04
Date是不是类型是date,然后他的会给他一个。默认值,比如说等于X点到是不是啊,给它一个默认值就好了。好,就多一个创建时间啊,这两个呢,是我们新建的两个东西,新建两个东西啊好,接下来呢,有了这个约束对象之后呢,我创建我的。啊,模型对象是不是创建模型对象靠一个。TS等于mangos的一个方法叫做model方法,是不是第一个传参数呢?就是我到时候的集合名称是不是跟它是一样的一样的,第二个呢,是我的啊,约束对象啊,好了,创建完之后呢,我最后要记得将它给他抱了出去,猫的有点。Explore等于我这个S好,这样呢,我这个东西就写完了,是不是写完了之后啊,我们来去写一写,该如何去保存它啊,该如何保存呢?我们来到我们的这个so中,是不是快有了我呢。
11:14
啊,专门写个save方法啊,专门写个方法,我们去保存我们的数据,叫做save,在save里面呢,我们保写一个文件叫做save。专门去这里写个模块去保存它,好那我们就写呗,写的话呢,我这里呢,向外暴露出去一个方法,同样的是一个方法,到时候呢,谁调用呢,谁就帮我去做这做好处理好,在这里面呢,我待会要保存数据呢,我就得将保存数据的那个集合是不是引入啊啊要引入我的这个。一个等于。Require。将这个也引入了点点斜杠,点点斜杠回退两层的model下面的这个东东是不是好找到它之后呢,我接下来是不是要去保存数据啊,那这个要保存数据啊,你呢。
12:09
应该把它给传给我,是不是你把你的数据呢,要传给我,传给我的时候呢,我在这里面去给你保存一下,保存量好,怎么保存呢。我们可以用点方法可以吗?方法第一个是不是要传你后要保存的东西啊?第二个是不是回调函数好方法我们想一想,我们要保存的无非就是title等于。对他点title是不是好,是不是把下面的都写一遍啊,都写一遍啊,那我们接下来呢,把这个放建好的这个东西复制一份啊,不然这样一个写下面这两个我暂且没有,是不是我把上面的都写写一遍,按CCT1。好,看一下这个缩进是不是出了问题,好来这里呢,就是对塔点好全部复制一份啊。
13:09
好,再复制这个是不是run car。Are you imagine do ID。这个东东,然后还有summary,是不是还有这个好,最后呢,是不是这些东西要保存下来啊,保存下来它是不是有个回调函数好,在这里呢,可以给大家讲一下,咱们这个所有的集合方法呢,只要你不写第二参数,它呢可以把它改装成一个promise啊,这是这个方法的一个特殊性啊,所有的集合方法呢,都能够返回一个promise项,所以呢,他们呢,除了用加入回调函数的方式去判断它到底有没有成功以外呢?哎,我还可以通过这个think wait去做好这个事。啊,只要wait成功的话呢,只要它成功,它呢就会调用在内部自自行调用那个so方法,从而呢,能够知道我这个数据呢是保存成功的啊,所以说呢,我们还可以去等待一下,等待它的保存成功啊,这是我们的这个集合的相关的一些东西啊,那这样呢,等待它之后呢,是不是它会告诉我到底有没有保存成功啊,比方说呢,我们可以看一下它有没有返回值,可以看一下啊。
14:24
比一个result等于这个接回值,然后呢,最终把这个回值给打印。是不是把返回值给打印一下啊,如果到这个后面呢,其实呢,我这里还可打印,句话就说数据保存成功是不是就保存成功啊,好像这里呢,我们写错了一个点啊,我们呢,首先来看一下我们这个data塔是不是一个数组啊,我不能这样直接保存,我是不是还要进行遍历,我还得进行遍历才行啊,也就是说这里呢,还差一步,我还得去放循环,是不是遍历我写的数据啊。
15:00
变历,比如说拿到每一个item,等于是塔取这个I值,好在这里面呢,其实要变利,我要将这个塔呢换成。是换成it才行啊,这里呢,要换成it才行,然这时候呢,才能说数据保存成功,保存了一条数据,是不是最终呢,是不是能保存我们的八条数据啊,八条数据就能全部保存了,好,那就是这样用我们复循环去循环遍利,然后呢,最终呢,它会把保存成功的东西呢,给你打印输出一下,打印输出一下,好那到这样呢,咱们这个方法呢,就相当于是定义完成了,是不是定义完成了,那我们呢,最终呢,看一下到底行不行啊,咱们在这个index里面设置一下,看看行不行。首先呢,我要去使用的话呢,我得去调用一个东西。点什么呢?我得去引入这个DB模块才行啊。现在呢,我们要去保存下来的话呢,前提是我要连接上数据库,是不是点斜杠呢,回头一层看一下能不能拿到这个DB,好拿到DB了,数据库模块拿到了,那我们首先第一步呢,就得去。
16:11
是不是连接数据库啊,我要一下这个DB模块啊,啊DB呢就是一个promise,所以说你直接等待一下就行了,等一下然后下面呢,是不是这里是请求数据啊,请求数据呢,你来看啊,它这个CRA最终呢,它好像没有返回值。是不是最终我这没有返回出去啊,没有返回出去,所以说你在关闭完浏览器之后呢,你最终要return一个result。哎,咱们想想,如果这个return result,他会做什么事?首先大家看啊,整体是一个函数对不对,这个函数是什么函数。是一个S函数,哎,咱们前面讲一下,咱们S函数的返回值是什么东西啊。是个pro项是不是,那么怎么去指定pro项里面的数据呢?
17:05
是不是最终去执行一个return就可以了,你需要暴露的数据是不是直接return出去就行了啊,所以说呢,他最终。最终会将把数据全部返回出去,全部返回出去啊,它呢相当于字形会调入送方法,Resource呢,传递的就是这个result,这个值传递这个result,所以说直接算出去就可以了,那大家注意就是这一步呢,你切记要放到最后面去做,你要等上面的逻辑是不是全部执行完毕之后才能特呢,所以说一定要注意这一点啊,好,也就是说呢,咱们这个index回到这里,它最终的返回值会有一个返回值。最终所有数据是不是会返回回来,好返回回来之后呢,这里呢是那我们写一下步骤啊,第一步呢是连接。数据库是不是好,第二步呢,是。
18:03
是不是爬取数据,爬取数据,那第三步呢,就是将。爬取的数据保存在数据库中是不是好?这里呢,我们引用了一个方法做成一个。等于一个require啊,咱们先写路径,点斜杠save下面的saves是不是啊,就是这个方法好写好它之后呢,是不是接下来要调用这个方法去保存我要的数据啊,保存的就是我这个。贝塔是不是等一下,等一下就行了,好,那到这呢,我们看一下接下来能不能成功,不能成功,那右键一。好,那呢,这里报个警啊,啊,这个没关系,再往下走。好,数据呢,已经请求回来一部分了,还有一部分没有请求下来,是不是那还得等。
19:10
好,再等一等啊,咱们网速可能不够快,他呢下面呢要打开八个网页,所以说相对来说较为麻烦一点啊,这些网页呢,都是在后台中运行的,是不是好来了,是不是都来了,来了之后呢,是不是接下来要保存数据呢,来往下走啊,看看它会不会保存呢。呃,诶,其实这些东西是保存了,是不是数据保存成功,然后后面呢,是不是将你这个保存的这个对象是不是返回给你啊,将你保存对象返回给你,比如说呢,它这个默认的返回值呢,就是你保存的这个对象是不是保存对象啊,通常呢,我们不会看这个返回值。大家知道有返回值就好了,通常我不会看,我们呢,只要在后面打一个数据保存成功就可以了啊好,那这里呢,我们就要写完了我们数据,最后一步呢,我们去数据库中检查一下,看下有没有我们想要的数据啊。
20:03
来连接一下数据库,连接一下数据库,那这里面呢,我们找到这个S硅谷木找到这个S,好打开它来去上一下,这里面呢,就是我们刚刚爬取到的所有的数据了,是不是,哎,其中呢,有一些东西是零,为什么呢?你看他是什么时候上映的,9月3号,现在他还来得及评价吗?是不是还没还没来得及评价这些东西啊,所以说它评分是零啊,是这样的,还没来得及评价的啊好这些呢,就是我们发提到的这八条数据了,是不是,哎,有了这条数据之后啊,那我就好办了,那我就是想办法呢,将这个八条数据是不是回复给用户啊,那咱们呢。啊,先停一下,这里呢是保存数据。
我来说两句