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. WPF Demo6

    通知项熟悉.数据绑定 using System.ComponentModel; namespace Demo6 { /// <summary> /// 通知项属性 /// </sum ...

  2. O(n)空间复杂度,打印杨辉三角形的前n行

    做小米的笔试题,给出一个整数n,求出它在杨辉三角形中第一次出现的行号. 想了半天,只能暴力法,从第1行开始找,一直找到第n行,若找得到则返回行号,若找不到则返回n+1(因为第n+1行第2列肯定是n). ...

  3. windows下隐藏磁盘分区

    在一定情况下有的人会想隐藏掉部分分区,比如双系统的情况 有两种方式 方法1: 删除盘符,适合在双系统的情况下隐藏掉另外一个系统相关的分区 请注意是删除盘符 不是删除分区 此电脑右键管理 点击磁盘管理 ...

  4. 术语-服务:SaaS

    ylbtech-术语-服务:SaaS SaaS是Software-as-a-Service(软件即服务)的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式. ...

  5. wordpress模板里加keywords和description

    刚才我说了,wp会弄的话,功能是很强大的,插件很多,基本上你能想到的功能,插件都开发好了的.现在就来说说这个keywords和description的问题.我在网上找了些资料,总结一下,如果有引用到的 ...

  6. 1061 Dating (20 分)

    1061 Dating (20 分) Sherlock Holmes received a note with some strange strings: Let's date! 3485djDkxh ...

  7. Oracle 学习SQL

    开始记录最近学习了一些基础的SQL知识. 说起数据库,想到当时学习数据库概论这本书的时候,就学了一些基本的SQL语句以及数据库理论知识,记得最当时考试的数据库范式的知识,不知当时是怎么过来的,到现在对 ...

  8. python之路day03

    1  复习计算机基础 计算机基础我们讲到完整的计算机系统包括了:应用程序,操作系统,硬件三部分.那么硬件又分为:cpu,内,和硬盘. 对于用户来说我们操作计算机是通过应用程序来间接控制计算机.当我们打 ...

  9. 经典算法 Manacher算法详解

    内容: 1.原始问题   =>O(N^2) 2.Manacher算法   =>O(N) 1.原始问题 Manacher算法是由题目“求字符串中长回文子串的长度”而来.比如 abcdcb 的 ...

  10. RouterOS 5.16软路由安装图解教程

    说明:RouterOS是一种路由器操作系统,它可以安装到普通的个人电脑上面,替代硬件路由器 RouterOS版本:RouterOS 5.16 硬件要求: 1.支持多核CPU 2.内存最大支持到2G 3 ...