express 和mongodb 的开发后台

express是node.js的一个框架 在他的基础之上还有一个koa 框架;

mongodb是一个非关系型数据库;

这次要做的是使用 node.js的mongoose模块 来链接 和操作mongodb;

 

安装 express

npm i express --save

根目录创建server文件夹,放置后台文件---》在文件夹内创建 server.js;

在 文件内 书写 :

const express= require("express");  //引入express
const app=express();                 // 调用express生成方法
app.get("/",function (req,res) {
    res.send("<h1>hello world</h1>")         //app.get的send方法,输出一段文本;访问 的是 :“/” 根目录
})
app.get("/data",function (req,res) {
    res.json({"name":"json"})                // app.get 的 json方法 ,输出json数组  访问的是 :“/data” data目录
})

app.listen(9093,function () {
    console.log("node start")            // app.listen 方法  监听 9093 端口 
})

以上的的代码 cd到server 文件夹 然后  在 输入node server.js   回车

这样就会执行这段node代码 

首先执行  listen 的语句 在下方能看到 listen方法里的打印的东西 ,

然后在浏览器访问 localhost:9093 就可以得到输出的一个html标签---helloworld

                         localhost:9093/data  得到一个json字符串  {"name","json"} 一般这种用法会比较常见 ;

 这样的输出 每次更改 都需要ctrl+c停掉 ,然后重新 node server.js  来重新启动;

 我们可以选择全局安装一个 辅助的热更新的工具  

npm i -g nodemon 

我发现 mac在全局安装的时候 需要输入密码,否则没权限报错; 局部安装好像是不用输入密码的;

那么就是sudo npm i -g nodemon  ,就这样  输入密码完成安装;

然后 nodemon server.js 执行 命令 热更新;

 

 

 mongodb的安装 

window 安装 比较简单 

linux 安装不会

仅仅说下 mac的安装

首先 你的去安装mac的包管理工具---- brew (酿);我这边下载的是homebrew(感谢王总的赞助帮我装上了);

然后 底下输入命令 brew install mongodb

 等  homebrew 自己更下一下  就可以正常下载了

 然后输入 mongod --config /usr/local/etc/mongod.conf 执行就可以跑起来了

新开一个任务窗口 ,然后输入mongo

可以得到下面的信息

MongoDB shell version v3.6.5
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.5
Server has startup warnings: 
2018-06-12T15:34:39.440+0800 I CONTROL  [initandlisten] 
2018-06-12T15:34:39.440+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-06-12T15:34:39.441+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-06-12T15:34:39.441+0800 I CONTROL  [initandlisten] 

这样就算是启动成功;

第二行url 就是mongodb的输出的端口;

然后就利用 mongoose 来把node和 mongodb的连接起来

安装 mongoose

 npm i mongoose --save 

安装成功后打开 server.js来修改

const express= require("express");
const mongoose=require('mongoose'); //引入mongoose 工具
const DB_URL="mongodb://127.0.0.1:27017"; // 拿到 mongodb的输出端口

mongoose.connect(DB_URL);   //使用mongoose链接到 mongodb的端口
mongoose.connection.on("connected",function () {
    console.log("connect successful");    //链接成功以后输出  字符串   
})

const app=express();
app.get("/",function (req,res) {
    res.send("<h1>hello world</h1>")
})
app.get("/data",function (req,res) {
    res.json({"name":"json"})
})

app.listen(9093,function () {
    console.log("node start")
})

这样进入目录下启动 nodemon server.js 就会输出 链接成功的字符串 ;

定义mongodb的文档模型

Schema 和model

const express= require("express");
const mongoose=require('mongoose');
const DB_URL="mongodb://127.0.0.1:27017";

mongoose.connect(DB_URL);
mongoose.connection.on("connected",function () {
    console.log("connect successful");
})
//mongodb 里有文档,字段的概念
const User=mongoose.model("user",new mongoose.Schema({
    user:{type:String,require:true},
    age:{type:Number,require:true}
})
)


const app=express();
app.get("/",function (req,res) {
    res.send("<h1>hello world</h1>")
})
app.get("/data",function (req,res) {
    res.json({"name":"json"})
})

app.listen(9093,function () {
    console.log("node start")
})





 

mongodb 里有文档和字段的概念

 

利用 mongoose的

增 create 

删 remove

改 update

查 Find和findOne

首先来尝试新增数据

//新增数据
User.create({name:"xiaoming",age:18},function (err,doc) {
    if(!err){
        console.log(doc)
    }else{
        console.log(err);
    }
})

node里的异步操作回调函数的参数一般的都是(err,doc)

第一个参数是错误信息;第二个就是正常输出了;

如果创建成功会看到控制台 打印

{ _id: 5b1f842859321604ac198892,
  user: 'xiaoming',
  age: 18,

  __v: 0 }

然后执行查的操作

上面执行增加的代码先注掉;

然后在/data代码里操作

app.get("/data",function (req,res) {
   User.find({},function (err,doc) {
       res.json(doc);
   })
})

第一个参数空对象 ,就是查全部的操作;

然后json格式输出;得到

 

[{"_id":"5b1f82720de0de04a2c5c680","age":18,"__v":0},
{"_id":"5b1f842859321604ac198892","user":"xiaoming","age":18,"__v":0},{"_id":"5b1f84a446aa8e04b0929e90","user":"xiaoming","age":18,"__v":0},{"_id":"5b1f84da96a5ea04b4cc1337","user":"xiaoming","age":18,"__v":0},{"_id":"5b1f84e725e6b504b7757326","user":"xiaoming","age":18,"__v":0},{"_id":"5b1f84f7d7982504ba25b055","user":"xiaoming","age":18,"__v":0}]

执行删除的操作

把age=18的全部删除

//删除数据
User.remove({age:18},function (err,doc) {
    console.log(doc)
})

第一个参数 是过滤对象

成功以后 会看到

{ n: 6, ok: 1 }

说明删除掉6条数据;;;;;

再插入两条数据方便进行改的操作;

//修改数据
User.update({user:"xiaoming"},{$set:{age:30}},function (err,doc) {
    console.log(doc);
})

第一个参数 是过滤对象    ,第二个参数的$set:{}里就是要设置的属性;

返回{ n: 1, nModified: 1, ok: 1 }说明修改成功;

 

最后补充一下查的操作

app.get("/data",function (req,res) {
   User.find({user:“xiaoming”},function (err,doc) {
       res.json(doc);
   })
})

在finde的过滤对象里 写入

user:“xiaoming”

然后输出就只剩下小明的的数据了

还有一个findOne 如果有多条数据 那么查找到一条就返回,;只是一个对象,不是find的数组;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个系统其实是出于学习nodejs的目的而改写的系统。 原来的系统前端使用了extjs4.2.1,后端使用了PHP5.4和ZEND框架开发后台数据库是用mongodb2.2.2。 我抽离出了原来系统中的账户管理,角色管理,菜单管理,权限管理这4个部分, 我想这4个部分,基本上所有的系统都会用到。具有一定的普遍性。所以将这4个部分用nodejs重新改写了。 该系统目前使用模块有express,ejs,connect-mongo,mongodb,express-partials,connect-flash,fibers,wind等 其实wind模块这次系统中没有使用。可以将它排除出去。我是出于学习wind的目的,才加入这个模块的。 本来准备使用wind模块,是为了实现同步的目的,由于后来改用了fibers模块之后,就没有使用它。这里说明一下 不是fibers要比wind好,而是我暂时不能理解wind,或则是说对wind的研究不够吧。 众所周知nodejs是推崇异步模式。但是这个系统是从php过来的,而php的代码是同步模式的写法,所以为了在改写的过程中 希望 1是代码改动最少 2是同步写法更加适合思维习惯。而且代码可读性高的目的,用到了fibers。 这个系统的源代码中有些js文件里保留了一些原来的PHP代码,这是出于代码对比的目的。 是让大家了解原来的php代码是怎么实现的,用nodejs之后是如何改写的。通过对比,大家会发现 其实通过使用fibers之后,几乎两者是一模一样的。 还有源代码中还保留了一些被注释掉的函数,有些是用到了wind,有些是用到了fibers,有些是直接异步的写法。 这些内容都是在开发过程中我不断尝试后的产物。我花了1周的时间才实现了一个递归的调用,而且还是同步的方式。 到目前为止,我还不能理解在异步模式下实现递归调用函数。比如说源代码中有个函数getMenuTree,菜单下面可能有子菜单, 子菜单的下面可能还有菜单。所以是一个递归的过程。我现在是同步的写法实现了这个函数,如果有人能够提供异步写法实现的递归函数并 emai给我,我不胜荣幸。 在使用本系统之前,必须要安装nodejs 0.10.10,mongodb2.2.2,python2.7.5至于安装的方法请googel解决。 将源代码下载之后,解压到某个目录下,比如说d:\nodejs\umav4simple目录。 进入到那个目录, a)运行以下命令 npm install express npm install ejs npm install connect-mongo npm install mongodb npm install express-partials npm install connect-flash npm install fibers npm install wind 尽管在源代码中已包含了这些模块,但是最好还是要重新运行一遍。 因为有些模块可能需要重新的编译。 比如说fibers模块,我在window下运行npm install fibers的时候编译了一个win32-ia32-v8-3.14 而在linux下重新编译了linux-ia32-v8-3.14。所以说根据操作系统的不同,可能会有一些不同。 以免造成想不到的错误。 b)打开settings.js,并且将你的mongodb的设置改写并保存。 c)运行node app.js或则node cluster.js 如果没有提示错误的话,那么就说明环境配置成功了。 d)通过以下的URL可以在mongodb中追加一些数据,不过只能运行一次。否则会重复追加数据。 浏览器上输入 http://localhost:3000/admin/index/install 做完之后, 浏览器上输入http://localhost:3000/ 就通过用户名admin 密码adminadmin进行登录,并使用这个系统了。
非常高兴能够为您介绍基于Node.js、ExpressMongoDB、Vue、Element-ui的后台管理系统项目的答辩讲解。 首先,该项目是一个基于Node.js、ExpressMongoDB、Vue、Element-ui的后台管理系统,旨在为用户提供一个可靠、高效、易于使用的后台管理平台。 下面我们将从以下几个方面进行讲解: 1. 项目概述 2. 技术架构 3. 功能介绍 4. 项目展示 5. 总结与展望 ### 1. 项目概述 该项目是一个后台管理系统,主要包括用户管理、商品管理、订单管理、数据统计等模块。用户可以通过登录系统,查看、添加、修改和删除相关信息,以及通过数据统计模块查看业务数据。 ### 2. 技术架构 该项目使用了以下技术: - 前端框架:Vue.js - 前端UI框架:Element-ui - 后端框架Express - 数据库:MongoDB - 其他组件:axios、echarts等 ### 3. 功能介绍 该项目主要包括以下几个模块: - 用户管理模块:管理员可以查看、添加、修改和删除用户信息。 - 商品管理模块:管理员可以查看、添加、修改和删除商品信息。 - 订单管理模块:管理员可以查看订单信息,包括订单状态、订单详情等。 - 数据统计模块:管理员可以通过数据统计模块查看业务数据,包括销售额、用户量等。 ### 4. 项目展示 以下是该项目的部分截图展示: - 登录页面 ![登录页面](https://i.imgur.com/9bFdXHj.png) - 用户管理页面 ![用户管理页面](https://i.imgur.com/3GjXJRG.png) - 商品管理页面 ![商品管理页面](https://i.imgur.com/9dbC4oi.png) - 订单管理页面 ![订单管理页面](https://i.imgur.com/d2tP8Vj.png) - 数据统计页面 ![数据统计页面](https://i.imgur.com/4dQG1lX.png) ### 5. 总结与展望 该项目是一个基于Node.js、ExpressMongoDB、Vue、Element-ui的后台管理系统,实现了用户管理、商品管理、订单管理、数据统计等功能。通过该项目的开发,我们学习了Vue.js、Element-ui、ExpressMongoDB等技术,提高了我们的前端和后端开发能力。 未来,我们将继续完善该项目,增加更多功能,提高用户体验,同时也会不断学习新技术,为后续的开发工作做好准备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值