连接数据库,
npm install mongoose。nodemon重新开启服务器。导入mongoose数据库
mongoose.connect连接数据库,第一个参数是固定的,mongodb://localhost/后面这个是可以自己写的,我们依然连接playground这个数据库。 then和catch可以看这个数据库是否连接成功 连接成功,不想看到提示信息,还是复制这块,加到 mongoose.connect 第二个参数里。此时,客户端--服务器--数据库连接成功了。但是数据库这个模块,我们是不能直接写在app.js里面的,要分离出去。在student文件夹下面新建model,新建connect.js文件 把app.js这段代码剪切走到connect.js里面粘贴 然后用require把connect文件引回来。这里不需要返回结果,所以不需要用变量接收。 根据这个信息设置集合规则,在model文件夹下新建user.js文件,这里面设定集合规则和创定学生信息集合
model返回集合的构造函数,用变量Student接受。model两个参数,第一个创建的集合名称,第二个,使用的集合规则。 集合的信息需要被外面引用,用module.export导出 在app.js中用变量Student来接受user集合。如此,实现了客户端,数据库,服务端的连接。 下载router和启动app.js 引入和获得router,router是一个函数 创建了两个路由,第一个路由是获得/test另一个路由是获得/index。get后面req和res这里其实是回调函数的参数,一个处理req,一个回复响应结果。 然后我们要去app.on也就是客户端访问服务器端那里去启动router这个方法,然后把请求对象和响应对象传给他。,后面这个回调函数是必须填的log。 输入index也是,返回了index。说明路由成功了。 返回了两个1,说明上面上面两个路由完成之后,去app.on那里调用了log,返回1 这个log函数暂时不填因为暂时用不上,不填会报错,所以弄一个空函数。 前面试测试路由有没有连接成功的,现在把/tex改成add页面,这个路由要把学生档案信息页面呈现出来。第二个路由/list页面,要把学生信息列表页面呈现出来。 现在去命令行中断开服务器,下载模板引擎 在student新建view文件夹,放置模板文件 把这三个文件复制粘贴到views文件夹中 views里面只放模板文件,所以把css文件夹剪切到新建的public文件夹中。public文件夹放置静态资源文件 把模板引擎引入,在路由里渲染这个模板,并把渲染结果响应给客户端 引入path模块,这个是用来拼接路径的,因为template那里需要绝对路径。path.join是来拼接路径的,——dirname是获得绝对路径,这里是在student下,然后加一个views就是模板所在的路径 由于template规定的,我们得把views里面的两个文件的后缀名改成art 我们要在template里面传入需要渲染的文件,暂时没有返回结果,所以后面的回调函数不填。html变量接受这个返回的结果并且res.end返回给客户端 去浏览页访问,先生无法访问 服务器没打开,去用nodemon打开服务器 这时客户端一直在等待服务器的返回结果 看到,由于css文件我们没做处理,所以我们要对静态资源进行处理。 我们要用到第三方的静态模块的,返回的都是方方,serveStatic是方法,返回的serve也是方法, 停止服务器,下载serve方法。重新启动服务器 引入serve模块,调用serveStatic方法,里面第一个参数是个绝对路径,也就是静态的地址,在public里面。 这还是一个方法,用serve接收,必须serve调用了,才能启动这个方法 还是在app.on那里去调用启动,有两个参数,req和res,把请求对象和响应对象传递给serve方法 这时候刷新页面就可以实现了路由功能和静态模块访问 add这块响应过去了,同样的,把list页面也响应渲染给客户端。 客户端也可以看到了 这个文件就是要添加信息的,我们给form表单添加请求地址。 请求地址是action属性,请求方式是method属性, 然后我们要看看我们定义集合规则的时候,都写了哪些属性,这些属性要给到htlm页面,以便提交的数据可以跟数据库匹配。当然,现在还不能匹配,只是通过路由吧数据传到了服务器。 然后我们需要添加一个请求地址是add请求方式是post的路由 我们还需要引入一个模块,这个模块可以不断的把请求的数据拼接成对象 formdata接受来请求的参数,是字符串格式,要转换成对象。我们要用到qureysthin的parse方法。 log把解析好的对象输出到控制台,然后给客户端一个相应,不然客户端会一直等待。随便相应一个内容abc 随便填写内容提交。 看到了abc说明提交成功 命令行中我们把参数接受过来了。然后我们要把数据添加到数据库里了 我们用Student这个方法把刚才处理好的数据接收了并且创建了数据到数据库里面,同时writehead重定向网页,回到list页面。res.end结束请求 在写一个信息提交, 跳转到列表里面了。 去compass软件看看数据添加没有 添加了一个数据成功了。 在list这个路由器里面我们要拿到数据库里面所有的学生数据,通过Student.find()方法,然后用student接收过来 colsolelog看看find的学生信息,在浏览器中刷新页面, 啥都没有,再去控制台中 student是个数组,里面有对象,对象就是我们查询到的学生信息,下面,要把学生信息和模板拼接并且渲染到客户端。 template的第二个参数是一个对象,我们添加一个student属性,这个属性其实就是上面student变量【框住那里】,这个student是个数组。list.art是模板,可以通过template语法把获得的student的数据对象根据.属性的方式,添加到模板上去 去list.art模板中,把数据和模板进行拼接。 再复制个tr,通过each循环生成tr标签 value值就是即将填入到表格里面的值,这个不要和name=name那里混淆了,那里是把数据提交给数据库匹配用的,这里就是改变呈现表格里面的值 刷新页面,发现添加了数据了。但是,性别,爱好,入学时间有问题。 我们看到,这里男女是用value1 和0来表示的,所以我们还有做个判断, 刷新页面 把value改一下 重新提交一个信息看看 这个就把数组显示的爱好都用span分开了 要处理日日期了 光引入不行,要创建个dateformat这个才能调用模板的方法 在模板里调用这个方法dateformat,里面传入value的时间参数,后面是格式, 刷新下没问题 再添加下,看看有没有问题 观察独立的功能代码,看看能不能分开。路由可以离开,在student文件夹新建router文件夹,新建index.js文件 把router剪切到index。js中 引入相关模块,集合也要粘贴过去,但是路径要改一下看看对不对 还用到了模板,所以把模板也引用过来,querysting也要引入过来。 刷新一下发现无法访问了 发现调用router那里报错了 开放router代码 重新引回来 再刷新,对的了 路由都是正常的。 所有的模块都放到了不同文件夹,app.js就是一个主代码,将各个模块联系起来。
网友评论