首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nodeJS操纵数据库

nodeJS操纵数据库

原创
作者头像
conanma
发布2022-01-04 17:44:32
发布2022-01-04 17:44:32
2.9K00
代码可运行
举报
文章被收录于专栏:正则正则
运行总次数:0
代码可运行

Node服务器软件的安装与配置

Node.exe的安装

下载nodeJS,安装

检测是否安装成功 node -v

另外一种安装我们node的方式 使用nvm这个软件来安装 node version manger,如果你想同时安装多个node版本 教程:http://www.jianshu.com/p/07c3456e875a

步骤: 1、安装nvm这个软件: https://github.com/coreybutler/nvm-windows/releases

2、使用上面装好的nvm软件,安装我们需要的node版本了 指令: nvm install 具体的版本号就行了 nvm uninstall 具体的版本号 nvm list 查看当前安装了哪些版本 nvm use 具体版本号,切换到某个版本

建议: 安装一个高一点的稳定的版本即可,因为软件都是向下兼容

系统环境变量及其作用

系统环境变量

每个系统都会提供一种叫做环境变量的东西,用来简化我们去 访问某一个应用程序可执行文件(.exe)的操作

我们配置了环境变量能做到什么事呢? 在我们终端的任何一个目录下,都可以访问,配置在系统 环境变量里面的可执行文件

如何将一个软件的可执行文件配置在我们的系统环境变量中? 步骤: 1、拷贝一个可执行文件所在的目录,比如: node.exe所在的目录 C:\Program Files\nodejs

2、系统 > 高级系统设置 > 高级 > 环境变量 > 系统变量 > Path > 填写上你的目录

注意事项: 如果更改了系统的环境变量,就必须把终端重新启动

启动node.exe执行js代码

启动(相当于启动Apache服务器)

1、在我们的node的安装目录下,去双击我们node.exe

2、在终端输入 node即可 node.exe

退出我们的node.exe

1、在终端中输入.exit 2、连续按住两次 CTRL + C

怎么去执行js代码

1、直接在我们启动的node.exe中写代码(在开启的REPL环境中写代码执行) 缺点: 书写不方便,阅读起来也不方便 因为在我们的cmd中写的代码,是放在内存中的, 一旦我们退出了node.exe,原先写的代码都没有了

2、把我们写好的代码放在一个单独的js文件中去执行

在终端中输入 node.exe +执行的文件名称

注意: 1、我们js代码不是在终端中运行的,只是借助终端 去启动我们node.exe,并且最终将结果展现在终端里面而已

2、在运行时候,首先你的终端的目录得切换到你要 执行的文件的目录下面去,然后使用node 文件名称执行即可 我们nodejs的代码是在一个叫做REPL环境中,执行的

REPL

JS的执行

执行js在浏览器端,我是是要依靠浏览器(js的解析引擎)

在服务器端 nodejs开启的REPL环境

官网的解释: 参考:http://shouce.qdfuns.com/nodejs/repl.html

REPL就是当通过node.exe启动之后开辟的一块内存空间, 在这块内容空间里面就可以解释执行我们的js代码

例如: 在终端中输入了 node abc.js 做的事情就是,将abc.js中 写好的js的逻辑代码扔在启动好的node的内容空间中去运行, 我们把启动好的node的这块内存空间称之为REPL环境

模块化思想

为什么前端需要有模块化

1、解决全局变量名污染的问题 2、把相同功能的代码放在一个模块(一个js文件中)方便后期维护 3、便于复用

NodeJS中如何体现模块化

1、Node本身是基于CommonJS规范, 参考:http://javascript.ruanyifeng.com/nodejs/module.html#toc0

2、Node作者在设计这门语言的时候,就严格按照CommonJS 的规范,将它的API设计成模块化了,比如它将开启Web服务这 个功能所有代码都放入一个http模块中

3、Node本质来说就是将相同功能的代码放入到一个.js文件中管理

常用NodeJS中的模块

代码语言:javascript
代码运行次数:0
运行
复制
模块              作用
http              开启一个Web服务,给浏览器提供服务
url            给浏览器发送请求用,还可以传递参数(GET)
querystring       处理浏览器通过GET/POST发送过来的参数
path              查找文件的路径
fs              在服务器端读取文件用的

上面五大核心模块加上其它一些第三方的模块,就可以完成基本的数据库操作了

nodeJS核心模块及其操作

http

代码语言:javascript
代码运行次数:0
运行
复制
使用http模块开启web服务
步骤:
    //1、导入我们需要的核心模块(NodeJS提供的模块我们称之为核心模块)
        var http = require('http');
    
    //2、利用获取到的核心模块的对象,创建一个server对象
        var server = http.createServer();

    //3、利用server对象监听浏览器的请求,并且处理(请求-处理-响应)
        server.on('request',function(req,res){
             res.end("welcome");
          });

    //4、开启web服务开始监听
        server.listen(8080,'127.0.0.1',function(){
            console.log('开启服务器成功');
          });

url

1、导入url这个核心模块

2、调用url.parse(url字符串,true),如果是true的话代表把我们 的username=zhangsan&pwd=123 字符串解析成js对象

代码语言:javascript
代码运行次数:0
运行
复制
 // 使用url模块获取url中的一些相关信息
const url = require('url')
var testURL = http://127.0.0.1:8899/login?username=zhangsan&pwd=123 
console.log(url.parse(testURL,true))//{username:zhangsan,pwd:123}

QueryString

作用: 将GET/POST传递过来的参数,进行解析 GET : ?username=zhangsan&pwd=123 POST : username=zhangsan&pwd=123

代码语言:javascript
代码运行次数:0
运行
复制
使用:
    const querystring = require('querystring')
    
    const paramsObj = querystring.parse(键值对的字符串)

GET&POST

相同点: 都是HTTP协议的方法 都能传递参数给服务器

不同点: 1、传参的方式不一样 GET 放在路径后面 ?开始,后面键值对 POST 放在请求体 键值对的方式

2、传参的限制不一样 GET 2048B POST 2M

3、GET有缓存,POST没有

4、GET传参不安全,POST相对安全

建议: 如果只是单纯的获取数据,就用GET,因为GET有缓存效率高

如果是要向服务器提交数据,就用POST

fs&path

path

作用:获取路径

代码语言:javascript
代码运行次数:0
运行
复制
path.join(__dirname,'你要读取的文件夹下面的文件名称即可')

__dirname全局属性,代表当前文件所在的文件夹路径

path.join会自动判断文件的路径,并且给他加上`/`

fs

代码语言:javascript
代码运行次数:0
运行
复制
作用:读取服务器硬盘上面的某一个文件(操作文件)

fs.readFile : 异步读取服务器硬盘上面的某一个文件
代码语言:javascript
代码运行次数:0
运行
复制
fs:node去读取服务器硬盘中的文件(操作文件)

path:获取文件的路径

上面两个基本上配合起来用

自定义模块

CommonJS规范认为,一个.js文件就可以看成一个模块,如果我们想把模块中定义的变量,方法,对象给外面的js使用,就必须使用CommonJS提供module将我们需要给外面用的东西,导出去

注意点

在commonjs中导入模块用 require 在commonjs中在模块中导出 使用module.exports 如果是自定义模块,在导入自定义模块的时候,得把路径写完整 require导入的东西,就是别的文件modulu.exports导出的东西

Express 框架

基本概念

它是对HTTP封装,用来简化我们网络功能那一块

官网:http://www.expressjs.com.cn/ 官方解释: 基于 Node.js 平台,快速、开放、极简的 web 开发框架。

重点

1、如何去接收GET/POST传递过来的参数 2、如何通过Express进行分门别类的处理路由 3、静态资源的处理

使用

1、Hello World 案例

步骤: 1、导入包 2、创建一个app 3、请求处理响应 4、开启web服务,开始监听

2、获取GET/POST参数 GET参数:登录 http://127.0.0.1:3000/login?username=zhangsan&pwd=123

可以直接在我们的req.query中就可以获取了

POST参数:因为express没有直接提供获取POST参数的方法,需要借助一个第三方包 body-parser 参考: https://www.npmjs.com/package/body-parser

步骤: 1、npm install body-parser --save 2、导包 3、实现某些方法

最后通过req.body即可以获取到post提交过来的参数

路由处理

前端路由: 作用:当触发了某个超链接之后,根据路由的配置,决定 跳转到哪个页面,最终将这个页面呈现出来

后台的路由 作用:就是用来分门别类的出路用户发送过来的请求

代码语言:javascript
代码运行次数:0
运行
复制
    http://127.0.0.1:3000/login
    http://127.0.0.1:3000/register
    
    http://127.0.0.1:3000/getGoodsList
    http://127.0.0.1:3000/getGoodsInfo
    
    jd购物
    男士:(专门创建一个man.js文件来实现男士区域商品的请求)
        http://www.jd.com/man/xz
        http://www.jd.com/man/ld
        http://www.jd.com/man/px
        
    女士:(专门创建一个girl.js文件来实现女士区域商品的请求)
        http://www.jd.com/girl/xs
        http://www.jd.com/girl/bag
        http://www.jd.com/girl/kh

express中代码实现?

步骤: 1、先要创建一个单独的路由(js文件),来处理某一类 请求下面的所有用户请求,并且需要导出去 1.1 导入包 express 1.2 创建一个路由对象 const manRouter = express.Router() 1.3 在具体的路由js中处理属于我们该文件的路由 manRouter.get(xxx) manRouter.post(xxx) 1.4 将上面创建的路由对象导出去,在入口文件中使用

2、在入口文件中,导入我们的路由文件,并且使用就可以了

代码语言:javascript
代码运行次数:0
运行
复制
//导入路由文件
const manRouter = require(path.join(__dirname,"man/manRouter.js"))
//在入口文件中使用
app.use('/man',manRouter)
                ```
                
## Express中静态资源的处理
Express希望对我们后台静态资源处理,达到简单的目的,
    然后只希望我们程序员写一句话就能搞定
    
步骤:
        1、在我们入口文件中设置静态资源的根目录
            注意点:一定要在路由处理之前设置

app.use(express.static(path.join(__dirname,'statics'))) ```

2、在我们的页面中,按照我们Express的规则来请求后台 静态资源数据 写link的href,script的src写的时候,除开静态资源根 路径之外,按照他在服务器上面的路径规则写

mongodb数据库

数据库

保存数据的仓库,数据库本质也是一个文件,只是说和普通的 文件不太一样,他有自己的存储规则,让我们保存数据和查询 数据更加方便

存储文件的介质

localStorage 文本文件 大型数据或是海量数据的时候必须要用到数据库

数据库的分类

客户端: iOS/Android/前端 iOS/Android SQLite 在iOS/Android存储App的数据

服务端: 关系型数据库 部门---员工 mysql sqlserver oracle

非关系型数据库 JSON对象的形式来存储

MongoDB : 简单,你会js、JSON就能操作 Redis Memcached

数据库的作用

1、保存应用程序产生的数据(用户注册数据,用户的个人信息等等) 2、当应用程序需要数据的时候,提供给应用程序去展示

安装mongodb服务端

步骤: 1、安装mongodb服务端软件 2、设置mongodb的环境变量,重启终端验证 mongo -version 3、建立一个文件夹,用来存储mongodb数据库产生的数 据(建议放在C盘根目录 mongodb_datas) 4、启动 mongod --dbpath c:/mongodb_datas

启动服务端有几种方式

1、方式一,直接在cmd中输入 mongod --dbpath c:/mongodb_datas 32位: mongod --dbpath c:/mongodb_datas --journal --storageEngine=mmapv1

2、方式二,可以把mongod --dbpath c:/mongodb_datas做成一个批处理文件 32位: mongod --dbpath c:/mongodb_datas --journal --storageEngine=mmapv1

使用robomongo这个小机器人来操作我们的数据库中的数据

步骤: 1、连接到我们mongodb数据库服务端,并且连接成功之 后,服务端会给我们返回一个操作数据库的db对象

2、拿着上一步返回的db对象,对mongodb数据库中的数据进行操作了

连接成功之后,我们要来操作数据的话 1、创建一个数据库 (相当于在excel中创建空白工作簿) 2、创建集合 (相当于在excel创建工作表单) 数据的一个集合,把相关联的数据放在一个集合中 3、确立表头,插入数据、删除数据、修改数据、查询数据

MongoDB数据库中的概念

数据库 : 一个App中对应一个数据库

集合:相当于Excel中表单,一堆数据的集合,相关联的数据, 会放在一个集合中

文档:相当于excel中的每一行数据

一个数据中可以有多个集合(学生集合、食品集合) 一个集合可以有多条文档(多条数据)

在NodeJS中使用mongodb这个第三方包来操作我们mongodb数据库中的数据

参考: https://www.npmjs.com/package/mongodb

前提准备: 1、使用npm i mongodb --save来安装

正式集成: 1、导入包 2、拿到我们mongoClient对象 3、使用mongoClient连接到mongodb的服务端,返回操作数据库的db对象 4、通过db对象,拿到数据集合

代码语言:javascript
代码运行次数:0
运行
复制
db.collection('集合的名称')
5、调用集合的增,删,改,查的方法,来操作数据库中的数据

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • Node.exe的安装
  • 系统环境变量及其作用
    • 系统环境变量
  • 启动node.exe执行js代码
    • 启动(相当于启动Apache服务器)
    • 退出我们的node.exe
    • 怎么去执行js代码
  • REPL
    • JS的执行
  • 模块化思想
    • 为什么前端需要有模块化
    • NodeJS中如何体现模块化
    • 常用NodeJS中的模块
  • nodeJS核心模块及其操作
    • http
    • url
    • QueryString
    • GET&POST
    • fs&path
      • path
      • fs
      • 自定义模块
      • 注意点
  • Express 框架
    • 基本概念
    • 重点
    • 使用
    • 路由处理
      • express中代码实现?
  • mongodb数据库
    • 数据库
    • 存储文件的介质
    • 数据库的分类
      • 数据库的作用
    • 安装mongodb服务端
    • 启动服务端有几种方式
    • 使用robomongo这个小机器人来操作我们的数据库中的数据
    • MongoDB数据库中的概念
      • 在NodeJS中使用mongodb这个第三方包来操作我们mongodb数据库中的数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档