快速使用node.js进行web开发详解(3)

extends layout block content h3.field.regheader #{title} form.regform(method='post') p.mess #{message} div.item label.label(for='username') 用户名 input(type='text',placeholder='输入注册用户名',id='username',name='username') div.item label.label(for='password') 用户密码 input(type='password',placeholder='用户密码',id='password',name='password') div.item label.label(for='passwordconf') 重复密码 input(type='password',placeholder='重复密码',id='passwordconf',name='passwordconf') div.item label.label input(type='submit',name='sub' value='注册')

用户登陆模板login.jade如下:

extends layout block content h3.field.regheader #{title} form.regform(method='post') p.mess #{message} div.item label.label(for='username') 用户名 input(type='text',placeholder='输入登陆用户名',id='username',name='username') div.item label.label(for='password') 用户密码 input(type='password',placeholder='用户密码',id='password',name='password') div.item label.label input(type='submit',name='sub' value='登陆')

最终用户注册效果如下:

快速使用node.js进行web开发详解

用户登录模块和这个效果相仿,就不查看了,少了一个重复密码的input而已。

下面我们需要编写用户注册的逻辑,在编写用户注册逻辑的前,用户数据需要持久化,所以首先要安装MongoDB数据库在自己的机器上.

MongoDB这种nosql类型的数据库,非常适合用户存储JSON对象类型的数据,有了mongoDB,就可以免去数据库表设计部分的工作,对比以前使用的mysql,sqlserver以及oracle还是非常方便的。关于mongoDB数据库的熟悉和学习,推荐其官网,官网详细介绍了该数据库的一切。英文不好可以去中文社区。同时为了使用nodejs来操作mongoDB数据库,我们使用mongoose这个对象模型,它是将mongoDB中的一个集合映射为nodejs中的一个model,然后在该model上提供操作这个集合的一些方法,使用它就可以避免我们自己利用nodejs提供的原生操作mongoDB数据库的语法去手写数据库CURD的方法,大大见晒了工作量,提高了开发效率。关于mongoose的学习,推荐去其官网,里面详述了它的安装,使用以及API调用情况。

解决了mongoDB安装和操作问题,我们来对数据库操作的model类,首先在项目路径下建立一个db.js文件,用来连接数据库并对数据库进行全局配置,如下

db.js

var settings=require("./settings"); var mongoose=require('mongoose'); mongoose.connect("mongodb://"+settings.ip+"https://www.jb51.net/"+settings.db); var db=mongoose.connection; module.exports={ "dbCon":db, "mongoose":mongoose };

这里首先加载了配置文件settings.js文件,为了数据库便于灵活修改,我们将某些信息存储在配置文件中。然后加在了之前安装的mongoose模块,然后调用该模块的connect方法来连接我们配置的数据库,然后将连接以对象的形式返回供外部调用。

settings.js

module.exports={ "ip":"localhost", "db":"microblog", "host":27071 };

MongoDB的默认端口是27071,一般可以使用默认端口即可,数据库连接大时候可以不指定端口,数据库名为microblog.

然后以db.js返回的数据库连接对象为基础,我们在项目根目录下创建一个models文件夹,用来存放数据模型。创建一个user.js映射我们数据库中的user集合(可以理解为user表),代码如下:

var mongoose=require('../db').mongoose; var schema=new mongoose.Schema({ name:'string', password:'string' }); var User=mongoose.model('User',schema); module.exports=User;

这里首先获得db.js中定义的连接对象,并以该对象为基础构造一个Schema(架构),mogoose操作数据库是以架构为基础的,类似于我们其他ORM模型中属性和方法的定义。这里我们定义了一个架构,拥有两个属性,name和password,都是string类型,对应用户的用户名和密码。然后利用该架构去创建一个model,该model上定义了对数据集合的增删改查等方法,不用我们自己再去定义和编写其他代码。在原书中这一节是利用node.js操作MongoDB数据库的原生API去定义了一个user对象,然后在user对象上自定义了一些CRUD的方法。可以看出,直接使用Mongoose可以大大减少开发量并且拥有更好的效率和性能。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wypgfp.html