使用nodejs连接mongoDB的详细步骤

使用nodejs连接mongoDB的详细步骤

步骤一

  • 安装nodejs,express,mongodb,mongoose(这里就不多说了~~)

步骤二

用express快速创建一个项目的框架

	express -e project
  • 参数说明:-e:使用的模板类型,project:项目名称

创建好项目后

  • 进入到创建的项目目录
  •   cd project
    
  • 安装package.json文件中项目所依赖的包
  •   cnpm install
    
  • 启动项目
  •   npm run start
    
  • 目录讲解
    • node_modules 项目中依赖的包
    • public 静态目录(放公共资源的)
    • routes 路由(存放一些路由文件)
    • views 视图(存放页面文件)
    • app.js 项目的入口文件

步骤三

设计数据库

  • 打开cmd(以管理员的身份)
  • 连接数据库(出现版本号就代表连接成功啦)
  •   mongo
    
  • 查看所有数据库
  •   show dbs
    
  • 创建一个名为admin的数据库
  •   use admin
    
  • 进入admin
  •   db
    
  • 在admin下创建一张表
  •   db.createCollection("goods")
    
  • 查看表
  •   show tables
    

连接数据库

  • 在项目根目录下创建一个model文件夹,然后在创建一个data.js(存放数据)和goods.js
  • goods.js如下
  •   // 引入模块
      var mongoose=require('mongoose');
      //引入data.js
      var seafoodList=require('./data.js').seafoodList
      // 连接数据库
      mongoose.connect('mongodb://localhost:27017/admin')
      // 得到数据库连接句柄
      var db=mongoose.connection;
      //通过 数据库连接句柄,监听mongoose数据库成功的事件
      db.on('open',function(err){
      	if(err){
      		console.log('数据库连接失败');
      		throw err;
      	}
      	console.log('数据库连接成功')
      })
      //定义表数据结构
      var seafoodModel=new mongoose.Schema({
      	id:Number,
      	name:String,
      	desc:String,
      	discount:Number,
      	price:Number,
      	coin:Number,
      	remain:String,
      	img_sm:String,
      	img_lg:String
      },{
      	versionKey:false //去除: - -v
      })
      // 将表的数据结构和表关联起来
      var seafoodModel=mongoose.model("seafoodList",seafoodModel,"goods");
      // 添加数据
      seafoodModel.insertMany(seafoodList,function(err,result){
      	if(err){
      		console.log("数据添加失败");
      		throw err;
      	}
      	console.log("数据添加成功:",result);
      })
      //导出数据
      module.exports={
      	seafoodModel:seafoodModel
      }
    

步骤四

在routes下创建goods.js

	//引入express模块
	var express=require("express")
	//引入数据模块
	var goodsData=require("../model/goods").seafoodModel;
	//获取路由对象
	var router=express.Router();
	//商品管理页
	router.get('/goods',function(req,res){
		res.render('index/index')
	})
	
	//商品信息
	router.get('/goodsList',function(req,res){
		goodsData.find({},function(err,result){
			if(err){
				console.log("查询失败")
				throw err
			}
			console.log("查询结果",result)
			res.render('goods/goodsList',{title:'商品信息',goodsList:result})
		})
		
	})
	
	module.exports=router;

步骤五

在views下创建goods文件夹,在goods下创建goodsList.html

  • goodsList.html主要代码如下
  •   <div class="page-content">
      				<div class="page-header">
      					<h1>
      						商品管理
      						<small>
      							<i class="icon-double-angle-right"></i>
      							 <%= title%>
      						</small>
      					</h1>
      				</div><!-- /.page-header -->
      				<!--主要内容-->
      				<div class="row">
      					<table class="table table-bordered table-hover text-center">
      						<thead>
      							<tr class="success">
      								<th class="text-center">id</th>
      								<th class="text-center">name</th>
      								<th class="text-center">desc</th>
      								<th class="text-center">discount</th>
      								<th class="text-center">coin</th>
      								<th class="text-center">remain</th>
      								<th class="text-center">img_sm</th>
      								<th class="text-center">img_lg</th>
      							</tr>
    
      						</thead>
      						<tbody>
      							<% for(var item in goodsList){%>
      						<tr>
      							<td><%= goodsList[item].id%></td>
      							<td><%= goodsList[item].name%></td>
      							<td><%= goodsList[item].desc%></td>
      							<td><%= goodsList[item].coin%></td>
      							<td><%= goodsList[item].remain%></td>
      							<td><%= goodsList[item].discount%></td>
      							<td class="cut"><%= goodsList[item].img_sm%></td>
      							<td class="cut1"><%= goodsList[item].img_lg%></td>
      						</tr>
      						<% }%>
      						</tbody>
      					</table>
      				</div>
      			</div><!-- /.page-content -->
    

最后ejs转为html

	app.set('views', path.join(__dirname, 'views'));
	app.engine(".html", ejs.__express);
	//设置模板引擎类型
	app.set('view engine', 'html');

posted on 2017-12-11 21:08  溢流谦  阅读(628)  评论(0编辑  收藏  举报

导航