NodeJS学习笔记之Connect中间件应用实例

一,开篇分析

大家好哦,大熊君又来了,昨天因为有点个人的事没有写博客,今天又出来了一篇,这篇主要是写一个记事本的小应用,前面的文章,

我也介绍过“Connect”中间件的使用以及“Mongodb”的用法,今天就结合这两个中间件,写个实际的例子,不断完善和重构,已达到

充分学习的目的。好了,废话不说了,直接进入主题。

二,需求分析

(1),用户注册,登录功能(没有涉及很复杂的交互场景,注册时会有用户判断是否已存在)。

(2),用户登录成功,进入笔记管理系统的后台(笔记模块的增删改查功能)。

(3),用户可以具有简单的权限划分(管理员,注册用户)。

(4),界面比较简单,以学习为主。

三,开始设计应用(第一部分)

(1),建立用户登录页面,代码如下:

复制代码 代码如下:

<!doctype html>
<html>
    <head>
        <title>Bigbear记事本应用登录</title>
        <meta content="IE=8" http-equiv="X-UA-Compatible"/>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css">
            .note-title {
                margin-bottom : 45px ;
                background : #6699cc ;
                font-size : 14px ;
                font-weight : bold ;
                color : #fff;
                font-family:arial ;
                height : 24px ;
                line-height : 24px ;
            }
            a {
                color : #336699;
                font-family:arial ;
                font-size : 14px ;
                font-weight : bold ;
            }
        </style>
        <script src="js/index.js"></script>
    </head>
    <body>
        <div class="note-title">Bigbear记事本应用登录</div>
            <form action="/login" method="post">
                <span>用户名:</span><input type="text" name="name" /><br/><br/>
                <span>密  码:</span><input type="password" name="password" />
                <input type="submit" value="登录" />
                <a href=#>             </form>
    </body>
</html>

  效果图:

(2),建立用户注册页面,代码如下:

复制代码 代码如下:

 <!doctype html>
 <html>
     <head>
         <title>Bigbear记事本应用注册</title>
         <meta content="IE=8" http-equiv="X-UA-Compatible"/>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
         <style type="text/css">
             .note-title {
                 margin-bottom : 45px ;
                 background : #ff3300 ;
                 font-size : 14px ;
                 font-weight : bold ;
                 color : #fff;
                 font-family:arial ;
                 height : 24px ;
                 line-height : 24px ;
             }
         </style>
         <script src="js/index.js"></script>
     </head>
     <body>
         <div class="note-title">Bigbear记事本应用注册</div>
             <form action="/reg" method="post">
                 <span>用户名:</span><input type="text" name="name" /><br/><br/>
                 <span>密  码:</span><input type="password" name="password" /><br/><br/>
                 <input type="submit" value="注册" />
             </form>
     </body>
 </html>

  效果图:

(3),建立“Mongodb”连接代码,如下:

复制代码 代码如下:

 var mongodb = require("mongodb") ;
 var server = new mongodb.Server("localhost",27017,{
     auto_reconnect : true
 }) ;
 var conn = new mongodb.Db("bb",server,{
     safe : true
 }) ;
 conn.open(function(error,db){
     if(error) throw error ;
     console.info("mongodb connected !") ;
 }) ;
 exports = module.exports = conn ;

(4),建立模型实体类“User”,如下:

复制代码 代码如下:

 var conn = require("../conn") ;
 function User(user){
     this.name = user["name"] ;
     this.password = user["password"] ;
 } ;
 User.prototype.save = function(callback){
     var that = this ;
     conn.collection("users",{
         safe : true
     },function(error,collection){
         if(error) return conn.close() ;
         collection.findOne({   // 判断此用户是否存在
             name : that.name
         },function(error,user){
             if(error) return conn.close() ;
             if(!user){
                 collection.insert({
                     name : that.name + "" ,
                     password : that.password + ""
                 },{
                     safe : true
                 },function(error,user){
    

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
本文实例讲述了js实现动画特效的文字链接鼠标悬停提示的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml" head meta http-equiv="Content-T
每一个 Javascript 函数都能在自己作用域内访问一个特殊的变量 - arguments。这个变量含有一个传递给函数的所有参数的列表。 arguments 对象不是一个数组。尽管在语法上它跟数组有相同的地方,例如它拥有 length 属性。但它并不是从 Array.prototype 继承而来,实际上,它就是一个对象。 因此,我们不能直接对 arguments 使用一些数组的方法,例如 push, pop 或 slice 等。 所以为了使用这些方法,我们就需要将其转换为一个真正的数组。 转化为数组
实例如下: 复制代码 代码如下: !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" html head titleMyHtml.html/title meta http-equiv="keywords" content="keyword1,keyword2,keyword3" meta http-equiv="description" content="this is my page" meta http-equiv="conten
如下,我们来定义Week的枚举: 复制代码 代码如下: if(typeof WeekDay == "undefined"){ var WeekDay = {}; WeekDay.Sunday = 0; WeekDay.Monday = 1; WeekDay.Tuesday = 2; WeekDay.Wedesay = 3; WeekDay.Thursday = 4; WeekDay.Friday = 5; WeekDay.Saturday = 6; } 测试如下: alert(WeekDay.Monday
复制代码 代码如下: function Test() { this.name = 'Test'; return function() { return true; } } var test = new Test(); // 这里的 test 是什么? 是一个 Test 对象吗?错!这里 test 是一个函数——Test 中返回的 function() { return true; }。这时,new Test() 等效于 Test(),注意,是等效于,不是等于,如果使用new Test() == Test(
复制代码 代码如下: select id="name" name="name" onkeydown="clearSelect(this,event);" onkeypress="writeSelect(this,event);" option value=""/option option value="test1"test1/option option value="test2"test2/option option value="test3"test3/option /select script fun
钻石棋游戏 独立钻石棋 剩余 32 个棋子、共走 0 步 [Ctrl+A 全选 注: 如需引入外部Js需刷新才能执行 ]

uploadify 3.0 详细使用说明 - 2015-04-20 11:04:17

使用: 复制代码 代码如下: //绑定的界面元素input id='gallery'type='file'/ $("#gallery").uploadify({ 设置参数,参数如下. }); 设置的属性: 复制代码 代码如下: id: jQuery(this).attr('id'),//绑定的input的ID langFile: 'http://www.static-xxx.nu/uploader/uploadifyLang_en.js',//语言包的路径,能设置所有的提示文字 swf: 'http://w
1. 去掉字符串两端的空格 String.prototype.trim=function (){return this.replace(/(^/s*)|(/s*$)/g,'');} 2. 去掉字符串中所有的空格: String.prototype.sTrim = function (){return this.replace(//s/g, '');} 或者: var s = "asd ddd bbb sss"; var reg = //s/g; var ss = s.replace(reg, ""); a
JS随机颜色有很多地方要用到:比如大家看到很多标签连接都是五颜六色。那就需要到这个了。下面开始: 方法思路总共有二。 一是准备一组漂亮的候选颜色,二是随机生成颜色 。 实现1 复制代码 代码如下: var getRandomColor = function(){ return '#' + (function(color){ return (color += '0123456789abcdef'[Math.floor(Math.random()*16)]) (color.length == 6) ? col