Node.js和mongoDB

本文详细介绍了Node.js中的模块系统,包括exports与module.exports的区别,以及官方模块如Url、fs、Buffer、Querystring和http模块的使用。特别强调了fs模块在文件读写中的异步操作。此外,还讲解了MongoDB的基础操作和Node.js通过mongoose与MongoDB的连接,包括增删改查的实现。最后,提到了JSON数据格式在前后端交互中的应用。

Node.js

一.模块

        1.公开暴露

                exports    

                module.exports

                        笔试题:两者的区别

                                都是公开暴露,但exports={}写法错误,底层有exports=module.exports,如果用exports={},覆盖了module.exports,不再具有公开功能

二.官方模块

        1.Globals模块-全局模块-全局变量在所有模块中都可以使用,不需要引入

                _dirname-当前文件夹的绝对路径

                _filename-当前文件夹完整的绝对路径

                exports-一个空{}公开暴露自己的成员

                module-指代当前模块本身

                require()-一个函数,引入其他的模块

        2.Url模块:网址模块-小重点

                需要引入let url=require('url')

                提供了一些实用函数,用于完整的URL解析

                var objUrl=url.parse('完整的url网址',true)会将url网址各个部分解析出来

                   真正的重点:查询字符串:bojUrl.query.键名   

                                                   objUrl.pathname-判断路由的不同,响应给不同的网页给用户看

        3.fs模块FileSystem-文件系统-今天大重点

               引入: var fs=require('fs')

                提供了可以操作文件的API

                异步读取文件

                        fs.readFile('绝对路径|文件路径',(err,buf)=>{

                        拿到BUF干嘛,写在这

                        })

                        

                        异步写入文件:- 将原来的东西,替换掉

                                fs.writeFile("绝对路径|文件路径","写入的新内容",()=>{

                                console.log("写入完毕了,以后要做什么")

                                })

                        异步追加文件:- 保留原来的东西

                                fs.appendFile("绝对路径|文件路径","写入的新内容",()=>{

                                console.log("写入完毕了,以后要做什么")

                                })

                 4.Buffer模块:缓冲区,将数组变成一个16进制的数字,不需要引入,直接使用

                5.Querystring模块:查询字符串

                        需要引入:let qs = require('querystring');

                        提供了解析url的查询字符串部分的功能

                        var obj=qs.parse("查询字符串部分");

                        想要获取前端传来的某一个部分:obj.键名;

                6.http模块-超级重点

                        引入模块

                        var http=require('http')

                        var url=require('url')

                        var fs=require('fs')

                        创建服务器

                        var app=http.creatSever()

                        设置监听端口

                         app.listen(80)http默认80,https默认443

                         绑定请求事件

                         app.on(req,res)=>{

                                }

                        得到前端传来的路由部分

                        var objUrl=url.parse(req,url,true)

                        var rooter=objUrl.pathname

                        判断前端的路由是什么,给她返回不同点的页面

                        

                        if(router=="/" || router=="/index.html"){

                                        //res - response:保存响应对象,后端->前端,提供了一个方法res.end(你想要响应的东西)

                        fs.readFile("./public/index.html",(err,buf)=>{

                        res.end(buf);

                                })

                          }else if(router.match(/html/)!=null){

                        console.log(router);

                        fs.readFile("./public"+router,(err,buf)=>{

                        res.end(buf);

                        })

                        }else if(router.match(/css|js|jpg|png|gif|woff/)!=null){

                        fs.readFile("./public"+router,(err,buf)=>{

                        res.end(buf);

                        })

                        }

                        })

MongoDB

一.mongo语法

        1.数据库操作

                1.查询数据框show dbs

                2.创建/切换数据库 use 数据库名称

                3.查看当前的数据库 db

                4.创建数据库 db,creatCollection('表名')

                5.删除数据库 db.dropDatabase()

        2.数据表操作

                1.创建数据表 db.creatCollection('表名',{size:5242880,capped:true,max:5000}); - 第                      个参数限制操作,最大存储空间为5M,最多为5000条数据 - 个人不推荐做限制

                2、查看目前所有的数据表:db.getCollectionNames();

                3、删除数据表:db.表名.drop();

        3、数据操作:

                1、增:db.表名.save({属性名:属性值,....}) - 一次只能插入一条数据 - 注册

                举例:db.users.save({name:"hjf",age:18,pwd:"123123",email:"hjf@qq.com",vip:"0"})

                        db.表名.save([{},{},{},...]) - 一次只能插入一条数据

                                个人建议:键名要统一

        2、删:db.表名.remove({键值对}) - 注销账号

                举例: db.表名.remove({username:"lr"})

        3、改:db.表名.update({条件},{要改的新内容}) - 修改密码

                举例:db.表名.update({name:"paoge",pwd:"666666"},{age:17}) - 这句话会把名字为paoge和密码为666666的替换为只剩age为17

                db.表名.update({name:"paoge",pwd:"666666"},{$set:{age:17}}) - 仅仅只修改了age

                最难的:

        4、查:db.表名.find({}) - 所有的

                db.表名.find({age:18}) - 找到所有年龄为18的数据

                db.表名.find({age:{$gte:18}}) - 找到所有年龄大于等于18的数据

                db.表名.find({name:/正则/}) - 甚至可以写入正则来进行模糊查询

                db.表名.find({},{name:1,age:1}) - 只需要name和age,其他的不要,1和0相当于是开关 - 我们登陆时只需要判断用户名和密码是否正确

                db.表名.find().sort({age:1}) - 按照age升序排列,降序的话换为-1

                db.表名.find().skip(0).limit(2) - 跳过前0条,再拿2条,可以理解为前两条;

                db.表名.find().count() - 获取此表有多少条数据

二.Node.js如何与MongoDB关联起来

        1.安装mongoose第三方模块

        2.使用步骤

                1.引入:const mongoose=require('mongoose')

                2.连接数据库:mongoose.connect('mongodb://127.0.0.1/数据库名称')

                3.创建出一个新的额数据库的同时,设置数据库类型的控制,防止用户恶意输入

                        var userSchema=mongoose.Schema({        

                                name:String,

                                age:Number,

                                pwd:String,

                                email:String,

                                vip:String

                          })

                var 模型名=mongoose.model('Users',userSchema,'users')

4.SQL语句

        增:

                var user=new 模型名({

                        name:'dy1'

                        age:'abc'

                })

                user.save((err)=>{

                        console.log(err)错误提示对象,null说明没有错误

                        插入完毕后要干什么在这写代码

                })

         删

                模型名.deleteOne/deleteMany({条件},(err)=>{

                        删除完毕后干嘛写在这

                })

        改

                

                模型名.updataOne/updataMany({条件},{新内容},(err)=>{

                        修改完毕后干嘛写在这

                })

        查

                

                模型名.find({条件},(err,result)=>{

                        result;查询到数据库中的东西

                })

ajax

一.概念:

        同步交互:用户向服务器端发起请求的时候,直到服务器响应的全过程,用户是不可以做其他事情的

        典型:网址请求,表单请求

        异步交互:用户向服务端发起请求的时候,直到服务器进行响应的全过程,用户是可以做其他事情的

        典型:ajax请求

        ajax:asnchronous JavaScript XML;直译:异步的js和xml-前端技术

        不严格的定义:页面不会完整的刷新,只会导致局部页面发送变化

        早就见过异步技术了

                1.定时器,定时器里面的内容再耗时也不会卡住后续代码-做特效

                2.ajax,在不刷新页面的额情况下就可以与客户端交流,不用表单提交,也可以将服务器的数据放在前端

        2.如何使用:固定四步

                1.创建ajax核心对象XMLhttpRequest

                        var xhr=XMLhttpRequest

                2.建立与服务器端的连接

                        xhr.open('GET','路由')

                3.向服务器发起请求

                        xhr.send()        特殊,GET请求下,xhr.send()会失效,但是不能省略,xhr.send(null)

                4.绑定状态监听时间

                        xhr.onreadystatechange=()=>{

                                if(xhr.readyState==4&&xhr.status==200){

                                        xhr.responseText;--得到服务器响应的文本

                                        }

                        }

                

1、XML数据格式:

1、面试题:HTML\XHTML\DHTML\XML分别是什么?

HTML - 网页

XHTML - 更严格的网页

DHTML - 动态的网页:D:Dynamic - 不是新技术、新概念,只是现有技术整合的统称,让我们的网页在离线版依然具有动态特效

DHTML:HTML+CSS+JS(dom)

XML - 配置文件|数据格式

其实保存数据有两种方式:

1、把数据放到数据库

2、把数据保存在一个文件之中.xml文件 - low

2、***JSON数据格式:JavaScript Object Notation:js对象表示法,本身就是js的一部分

作用:数据格式 类似 XML

优点:比XML 更简洁、更快、更容易解析 - 一个优秀的数据格式/结构能极大的提升我们程序员的开发效率

属于【字符串】数据表示法

1、后端的操作:哪些数据JSON字符串:后端把数据库的数据取出来,整理为一个JSON字符串:

1、先要认识哪些叫做JSON字符串:

1、'[1,2,3,4,5]'

2、'{"key":value}'

3、'[{},{},{},{},{}]'

4、'{"names":["代老师","冉老师","卢老师"]}'

2、怎么才能变为JSON字符串:

*JSON.stringify(x);

2、前端:依然使用ajax去获取数据,但是真正重要的是xhr.responseText;

拿到JSON字符串并不方便我们获取数据,怎么脱衣服?

1、eval("("+jsonTxt+")"); - 只要外层是{},优先级就会出现问题,导致脱衣服报错

2、*JSON.parse(jsonTxt);

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值