express + mongodb 搭建一个简易网站 (四)

目前网站整体页面都已经能全部展示了,但是,整个网站还有两个块需要做完才能算完整,一个连接数据库,目前网站上的数据都是抓取的本地假数据,所以连接上数据库之后才能算是一个动态网站,第二个就是网站的登录页还没做,有登录就有注册,注册的用户数据也是需要放到数据库中去的。

至于使用什么数据库,就选择mongodb吧,选什么数据库按自己的心情来吧。这一节我们把项目连上数据库,然后对数据库进行增删改查,页面拿数据库中的数据进行展示。

1.在根目录下新建schemas文件夹,在schemas文件下新建goods.js文件,然后在goods.js添加如下代码:

var mongoose = require('mongoose');

var goodsSchemas = new mongoose.Schema({
kind: Number,
title: String,
price: String,
picUrl: String
}) // goodsSchemas 模式的静态方法
goodsSchemas.statics = {
fetch: function (cb) {
return this
.find({})
.exec(cb)
},
findByKind: function (kind, cb) {
return this
.findOne({kind: kind})
.exec(cb)
}
} // 导出 goodsSchemas 模式
module.exports = goodsSchemas;

这里对mongoose就不介绍了,http://cnodejs.org/topic/504b4924e2b84515770103dd   和 http://www.nodeclass.com/api/mongoose.html  个人感觉不错,后一个是官方文档。看看就知道怎么用了。

在根目录下新建models文件夹,在models文件下新建goods.js文件(你没看错,和schemas下的goods.js同名),然后在goods.js添加如下代码:

var mongoose = require('mongoose');
var movieSchema = require('../schemas/goods.js'); //引入'../schemas/movie.js'导出的模式模块 // 编译生成movie模型
var goods = mongoose.model('goods', movieSchema); // 将movie模型[构造函数]导出
module.exports = goods;

2.现在数据库模型建好了,该连接数据库了,在入口文件app.js代码修改为:

var express = require('express'); // 引入express框架
var path = require('path'); // 引入path模块
var routes = require('./routes/app');// 引入路由模块
var port = process.env.PORT || 8000; // 设置端口号:3000 var app = express(); //实例化express var serveStatic = require('serve-static'); // 静态文件处理
app.use(serveStatic('public')); // 路径:public app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs'); app.listen(port); // 启动web服务。 var mongoose = require('mongoose'); // 加载mongoose模块
mongoose.connect('mongodb://localhost:27017/goods'); // 连接mongodb本地数据库imovie
console.log('MongoDB connection success!');
/* mongoose 简要知识点补充
* mongoose模块构建在mongodb之上,提供了Schema[模式]、Model[模型]和Document[文档]对象,用起来更为方便。
* Schema对象定义文档的结构(类似表结构),可以定义字段和类型、唯一性、索引和验证。
* Model对象表示集合中的所有文档。
* Document对象作为集合中的单个文档的表示。
* mongoose还有Query和Aggregate对象,Query实现查询,Aggregate实现聚合。
* */ routes(app);
console.log('server listening at ' + port);

3.这次我们就先修改导航中“所有宝贝”的内容吧,最后在routes文件下找到all.js修改代码为:

var express = require('express');
var router = express.Router();
var goods = require('../models/goods.js'); // 载入mongoose编译后的模型movie router.get('/', function(req, res) {
// 查询数据库中所有商品数据
goods.fetch(function(err, goods) {
if (err) {
console.log(err);
}
res.render('all',{
goods: goods
})
})
}) module.exports = router;

编码搞定,现在把mongodb启动起来(没安装的去安装啊),找到mongodb的安装路径,如我自己的安装路径为“C:\Program Files\MongoDB\Server\3.4\bin”,然后在这个路劲下打开控制台输入:mongod.exe --dbpath D:\qp_wx_supernano_com\qp-wx13.supernano.com\db,
注意到--dbpath后面那一串路径没,这个路径自己配置啊,数据想存哪里自己就改。正常情况下,mongodb启动起来了(默认启动起来了啊)。

然后继续在“C:\Program Files\MongoDB\Server\3.4\bin”这个路径下打开控制台,没错还是这个路径,在控制台输入mongo,搞定,你现在已经进入本地数据库了,可以增删改查了。像这样:

最后启动项目node app,这个熟悉了吧,可以打开浏览器:localhost:8000看看效果了。是不是发现没有任何商品展示?像这样:

那就没错了,因为你此时数据库里面没有数据,有商品展示就要爆炸了。

找到开始输入mongo命令的那个控制台,输入show dbs,看看有哪些数据库,如下图:

项目中没有goods数据库,那就新建一个,输入use goods,就新建一个数据库goods,如下图:

最后在goods数据库中新建一个集合goods(类似mysql的表),如下图:

现在就可以插入数据了,输入db.goods.insert({url: 'https://img.alicdn.com/imgextra/i3/1020250042/TB2qHT5pypnpuFjSZFkXXc4ZpXa_!!1020250042-0-beehive-scenes.jpg_180x180q70', title: '女生上衣', price: '229元', kind: 1}),现在在浏览器看看效果,是不是像这样:

这次我们实现了导航中“所有宝贝”的数据库链接,其他的页面其实就很简单了(只要注意数据库中的数据过滤条件),有兴趣的同学可以自己去试试,其他页面就留到下次去了。

express + mongodb 搭建一个简易网站 (四)的更多相关文章

  1. express + mongodb 搭建一个简易网站 (三)

    express + mongodb 搭建一个简易网站 (三) 前面已经实现了基本的网站功能,现在我们就开始开搞一个完整的网站,现在整个网站的UI就是下面的这个样子. 我们网站的样子就照着这个来吧. 1 ...

  2. express + mongodb 搭建一个简易网站(二)

    express + mongodb 搭建一个简易网站 (二) 在搭建网站(一)中,实现了简单的路由功能,这离一个完整的网站还差的有点远,继续撸代码吧. 1.首先在根目录下新建一个views文件夹,用来 ...

  3. express + mongodb 搭建一个简易网站(一)

    express + mongodb 搭建一个简易网站(一) 前言:后台使用node.js的express框架,数据库使用mongodb,模板使用ejs.大概就这些. 开始第一个简易网站之旅吧.... ...

  4. express + mongodb 搭建一个简易网站 (五)

    前面已经将导航中的“所有宝贝”页面连上了mongodb,现在我们就把其他的页面脸上数据库,将整个网站全部实现. 打开routes文件,找到jacket.js,将里面的代码修改如下: var expre ...

  5. 从无到有,用Nodejs+express+mongodb搭建简易登陆系统

    前端处理server表示很蛋疼,初学Node,虽然感觉异常强大,但是学起来还是有些吃力的,Node是工具,它不是万能的,搭建一个系统还是需要借助其他一些工具,对于我这个没怎么接触server的前端来说 ...

  6. 使用EF Code First搭建一个简易ASP.NET MVC网站,允许数据库迁移

    本篇使用EF Code First搭建一个简易ASP.NET MVC 4网站,并允许数据库迁移. 创建一个ASP.NET MVC 4 网站. 在Models文件夹内创建Person类. public ...

  7. 利用git+hugo+markdown 搭建一个静态网站

    利用git+hugo+markdown 搭建一个静态网站 一直想要有一个自己的文档管理系统: 可以很方便书写,而且相应的文档很容易被分享 很方便的存储.管理.历史记录 比较方面的浏览和查询 第一点用M ...

  8. Angularjs,WebAPI 搭建一个简易权限管理系统

    Angularjs,WebAPI 搭建一个简易权限管理系统 Angularjs名词与概念(一)   1. 目录 前言 Angularjs名词与概念 权限系统原型 权限系统业务 数据库设计和实现 Web ...

  9. Django搭建博客网站(四)

    Django搭建博客网站(四) 最后一篇主要讲讲在后台文章编辑加入markdown,已经在文章详情页对markdown的解析. Django搭建博客网站(一) Django搭建博客网站(二) Djan ...

随机推荐

  1. ubuntu初次设置root密码

    初次安装ubuntu创建的用户不是root用户,但是需要root权限的时候又需要密码,那么如何设置密码呢? 很简单.如下几步操作

  2. redis通过dump.db文件 进行数据替换 复制

    进行数据替换无非就是三步, 杀掉redis进程 ------------> 复制 dump.db文件 ------------------>启动redis   pkill redis-se ...

  3. Heritrix3.x自定义扩展Extractor

    一.引言: Heritrix3.x与Heritrix1.x版本差异比较大,全新配置模式的引入+扩展接口的变化,同时由于说明文档的匮乏,给Heritrix的开发者带来困惑,前面的文章已经就Heritri ...

  4. C++进阶--const变量

    //############################################################# // const // - 编译时的限制:一个对象不能被修改 // in ...

  5. charles只获取指定的请求的设置方法

    过滤网络请求 通常情况下,需要对网络请求进行过滤,只监控指定服务器的请求.有3种办法: 方法一:在主界面的中部的 Filter 栏中输入需要过滤出来的关键字.例如我们的服务器的地址(host)是:ww ...

  6. Noip2011Mayan游戏

    题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定 ...

  7. 转化Excel表格为php配置文件

    <?php     //建立reader对象 ,分别用两个不同的类对象读取2007和2003版本的excel文件    require("PHPExcel/Reader/Excel20 ...

  8. Executor框架(二)Executor 与 ExecutorService两个基本接口

    一.Executor 接口简介 Executor接口是Executor框架的一个最基本的接口,Executor框架的大部分类都直接或间接地实现了此接口. 只有一个方法 void execute(Run ...

  9. python入门-测试代码

    断言 测试函数 def get_formatted_name(first,last): """generate a neatly formattef full name& ...

  10. HTML5 Canvas ( 图形变换, 升级版的星空 ) translate, rotate, scale

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...