node.js用户注册功能的完善

这篇主要实现了蹩脚的邮件发送,log日志,以及mongodb数据库更新的操作。

草草写点,不然留到五一过后,就说不过去了。因为时间比较紧,所以功能很多都是对付,留给以后优化吧。邮件发送这一块,实现的比较简单,原计划是服务器端为用户生成一个令牌的,形如:http://127.0.0.1:3000?key=w345d&username=fuhui1,但是因为服务器端还得验证,火大,暂时放弃了,直接使用username.

不了解思路的,这里在简单介绍一下,下面是注册页面:

然后判断数据库里fuhui2是不是存在,如果存在,我就不注册了,这里目前只是单纯的return,并没有实现提示功能。然后数据表就插进去了,形式上就是

然后发送邮件到注册者的邮箱,同时更新isValid字段为1.因为mongodb数据库没有行列的概念,可能一行数据有2列,另一行数据有5个field.形式就更新成上一图中有isValid的样子。

最后记录一下发送邮件的日志:

记录用户的session,前面的章节介绍了,然后跳转到用户的主页:

下面是跳转后的主页,目前只是表示有跳转这个功能,其他不管了

不要看这个很简单,实现起来其实也不是很容易,花了足足两个小时,搞定的。

第一步,邮件模块的实现,主要是配置了QQ邮箱,按照教程配的,google吧。

exports.sendMail = function (emailAddress, title, content) {
    mail.sendMail({
        from: emailConf["user"],
        to: emailAddress,
        subject: title,
        html: content
    }, function (error, success) {
        if (!error) {
            //日志记录
            console.log('message success', success);
        } else {
            lib.log.write("maillog/sendmail.log",[err]);
            console.log('failed' + error);
        }
    });
}

第二步,实现了更新的函数。有时候觉得mongodb就是给js写的一样,使用js操作起来特别方便,看过php操作mongodb的,但感觉就是不爽,json用数组来表示,灰常不开心,虽然自己是搞php的吧。

mongodb灰常神奇,尤其是嵌套数组和文档,尤其是更新操作如果指定了upsert还是什么属性的,查找没找到,还管给你插入一条。还有比较有意思的是,更新不小心就会变成替换,不指定$set或者$inc什么的,他不进行更新,他进行的是替换操作。所以才有了上面的那个,第一次插入了三个字段,第二次更新的时候,又插入了一个isValid字段。

贴一下基类的更新:

/**
     * 更新用户的操作
     * 该方法更新了option参数,之前使用默认值{safe: true}
     */
    this.modify = function (tableName, whereJson, rowInfo,option, callback) {
        connection(function (mdbConn) {
            mdbConn.collection(tableName, function (err, collection) {
                collection.update(whereJson, rowInfo, option, function (err) {
                    if (err) {
                        console.log(err);
                        callback(false);
                    }
                    else {
                        callback(true);
                    }
                });
            })
        });
    }

第三步,日志操作。虽然手头有log4j模块的认识了解,但是还是没有用,因为没有时间实践,只能跟php一样,写个write类来手动写了,以后再完善吧

//日志记录
exports.write = function (file, infor) {
    var file_path = LOG + file;
    lib.fs.open(file_path, "a", function (err, fd) {
        if (err)
            throw err;
        console.log(typeof infor);
        return ;
//        if (typeof infor != 'array')
//            throw new Error("type failed");
        var data = format_time + " , " + infor.join(" , ") + "/n";
        lib.fs.writeSync(fd, data, function (err, writen, str) {

        });
        lib.fs.closeSync(fd);
    });
}

第五步,给邮箱生成一个令牌。我本来计划生成一个随机数的,但是无意中发现crypto模板,本来是要该模块是进行hash密码加密的,这里我的加密方式也很简单easy,就是普通的hash加了一个盐值。   回归主题,发现 这个模块还能生成一个随机数,所以,嘻嘻,

/**
 * 获取一个随机的10位数
 */
exports.validcode =function(callback){
    crypto.randomBytes(10,function(ex,buf){
        if (ex) throw ex;
        callback(buf);
    });
}

仔细看了一下,全是bug,路还很长啊,接下来完成登录,然后就是完善一下这几个模块,日志,加密,邮件发送等等吧。

以后这些东西都放到虚拟机里了,在虚拟机了安装nginx,放弃127.0.0.1这个low的名称了。至于上传文件的部分,就不安装vsftpd了,值得说一下,网上的安装教程真的是太火大了,都是说些不靠谱的东西,或者四处转载,根本就不能好好的解决问题,什么添加目录权限了,添加用户组了介绍的都很不爽,也因为电脑的原因,就直接使用rz方式了。

因为我的redis和mongodb在虚拟机上,所以,每次启动都的切换界面。

好辛苦,欢迎大家加群抨击。

时间: 2024-08-11 03:31:36

node.js用户注册功能的完善的相关文章

[转载]Visual Studio支持Node.js

http://news.cnblogs.com/n/193893/ https://nodejstools.codeplex.com/ 微软发布了一个官方插件“Node.js Tools for Visual Studio(NTVS)”,为 Visual Studio IDE 引入 Node.js 支持功能,插件将 VS 变成了一个 Node.js 开发环境. Node.js 是一个事件驱动I/O服务端 JavaScript 环境,基于 Google 的 V8 引擎.NTVS 在 Apache

Node.js+MongoDB+AngularJS Web开发

这篇是计算机类的优质预售推荐>>>><Node.js+MongoDB+AngularJS Web开发> MEAN全栈工程师首部实战书 从服务器到浏览器基于JavaScript的Web应用程序权威指南 内容完整细致可直接用来入门任一技术 编辑推荐 Node.js是一种领先的服务器端编程环境,MongoDB是最流行的NoSQL数据库,而AngularJS正迅速成为基于MVC的前端开发的领先框架.它们结合在一起使得Web程序员能够完全用JavaScript创建从服务器到客户端

Win8 搭建 Node.js 开发环境

刚接触node.js,把一些过程记录下来,已备今后查阅.如果有不明确或者错误之处,欢迎批评指正. Node.js是什么? 我看了网上一些文章,我的理解是功能类似于apache,可以理解为服务器端.但是实现的机制不一样,并发的效果很好,他的目标的取代Apache服务器机制. 好了,下面直接开始环境配置吧: 1,下载Node.js 直接去官网下载,http://www.nodejs.org/download/ 选择 Windows Installer (.msi) 版本 64 bit.这里会发现有个

node.js前后台交互示例 -- 使用node.js实现用户注册功能

node.js环境自行搭建,参考菜鸟教程的node.js就可以. 1 通过ajax提交index.html中form表单 register.html文件如下: <!doctype html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> <script src="jquery.js"></scrip

node.js基于express框架搭建一个简单的注册登录Web功能

这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注明一下版本,因为express因为版本的不同使用的方式也不同,我这算是目前最新的了吧 还没有装express的可以移步到这里 看看express框架的获取安装 1.简单地项目初始化 进入你的nodejs安装路径下边,如图,然后执行命令  express -e test  (这里把项目名设置为test

Node.js的集群功能以及在Express的配置

Node.js在v0.6.0版本下内置了集群功能,作为cluster模块,用于nodejs的多核处理,也比较容易通过脚本实现一个负载均衡的集群. 脚本参考了其他人的材料,建立一个server.js(因为虚拟机只有1核,为模拟多线程,所以采用numCPUs+4) var cluster = require('cluster'); var http = require('http'); var numCPUs = require('os').cpus().length; if (cluster.is

node.js实现CURL功能

PHP中的CURL功能很好实现,直接四五行代码封装一下就OK了.node.js中如何实现CURL的功能呢,下面详细介绍. 这里需要用到request这个库,所以先安装此包: npm install request 安装下来之后, 就是代码实现的问题了.示例代码如下(只实现了POST方法): var request = require('request'); request.post( { url:'http://hovertree.com:9095/phpTest.php', form:{ us

Node.js结合使用MongDb的Map.reduce功能进行大量数据简化处理办法

一年前,准备使用mongDb自带的map,reduce功能模拟hadoop,换个思路做一个简易的大数据分拆再结合存储的办法: 这个功能可以用于数据日志或者游戏数据之类,进行周期性归纳和按照自己需求重组数据; 以下代码实现了将每日数据collecttion:gameLog日期的数据统计出不同的collection.具体不详述,只讲思路和遇到的问题: 主要代码如下: var MongoClient = require('mongodb').MongoClient;MongoClient.connec

Node.js入门教程——如何实现文件上传功能

作者:zhanhailiang 日期:2014-11-16 本文将介绍如何使用Node.js实现文件上传功能. 1. 初始化项目信息:npm init [root@~/wade/nodejs/nodejs-upload-image-demo]# npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to gu