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. java学习——类之YuanZhu

    package hello; import java.util.Scanner; public class YuanZhu { public static void main(String[] arg ...

  2. 用Keras搭建神经网络 简单模版(三)—— CNN 卷积神经网络(手写数字图片识别)

    # -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) #for reproducibility再现性 from keras.d ...

  3. shell 7echo命令

    echo用于字符串的输出 1. 显示普通字符串 #shell #!/bin/sh echo "Hello world" echo Hello world Hello world H ...

  4. VMware 安装Windows sever 2008 R2服务器

    一. 安装包下载: Windows Server 2008 R2 简体中文企业版[server 2008 r2下载] 二. 新建虚拟机 三. 安装Window Server 2008 R2 四. 服务 ...

  5. 在VM克隆CENTOS以后,网卡的处理过程

    会发现克隆CENTOS以后,网卡eth0无法启动.处理步骤如下:1. vi /etc/sysconfig/network-scripts/ifcfg-eth0删除HWADDR地址那行删除UUID的那行 ...

  6. centos svn 的搭建

    一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库(repository) 中. ...

  7. win10的坑之wifi找不到

    安装了win10一周以来,win10的坑太多太多,微软搞什么pc/mobile二合一,真是脑残行为. 首先是usb设备无缘无故找不到,据说是和杀毒软件/防火墙有关,后来是关掉了windows defe ...

  8. Hibernate 一对一

    一对一关系映射: 一对一关系映射即关系双方都只含有对方的一个引用(eg:人和身份证) 一对一关系映射又分为唯一外键关联映射和主键关联映射 数据库表结构: 创建实体类: public class Per ...

  9. sklearn-MultinomialNB朴素贝叶斯分类器

    原型 class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None) 参数 Parameter ...

  10. html5 如何实现客户端验证上传文件的大小

    在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以 马上校验文件的大小和属性等.本文章向码农介绍html5 如何实现客户端验证上传文件的大小,感兴趣的码农可以参考一下. ...