node.js 之 express框架+MongoDB(前端使用vue)
来源:互联网 发布:java mongodb 连接池 编辑:程序博客网 时间:2024/05/29 19:55
1. 下载安装node环境,Mac、linux、windows各不相同
2. 安装后输入: node -v查看,出现版本号则安装成功
3. 打开terminal,安装express框架,(为了更快速,更易安装成功,建议先安装淘宝镜像,使用cnpm)
淘宝镜像地址:http://npm.taobao.org/mirrors/node
4. 开始安装
cnpm install -g express-generatorexpress servercd servercnpm install
bin:可执行文件,做封装,通过http模块创建server,监听端口、启动服务,通过www启动项目
app.js:入口,本身依赖express;
path自带模块;
favion浏览器logo;
logger:日志输出;
cookie-parser:cookie信息进行转化;
bodyParser对返回值进行转化;
先加载index再加载user两个路由
express.static(path.jion)设置静态目录
public:静态文件js、css
routes:路由,浏览器访问地址,代表controller
views:jade或其他模版文件,运行时自动加载view文件夹中文件,模板引擎可以换成ejs或html等
package.json
- 将模板引擎改为html(jade用起来还是不太习惯):将jade文件删掉,修改app.js
app.engine('.html',ejs.__express);app.set('view engine', 'html');
var ejs = require('ejs');
- 回到上层菜单:cd ..
- cnpm install ejs --save
- 在views文件夹下建立一个index.html
- 编辑app.js文件:
- 启动npm start
启动命令:supervisor ./bin/www
在地址栏:localhost:3000启动
6. MongoDB,这个参考之前发的MongoDB环境搭建
7,基于express开发
安装Mongoose:cnpm install mongoose --save
创建model:在server中创建一个models文件夹
var mongoose = require('mongoose')var Schema = mongoose.Schema;var productSchema = new Schema({ "productId":{type:String}, "productName":String, "salePrice":Number, "checked":String, "productNum":Number, "productImage":String});module.exports = mongoose.model('Good',productSchema);
首先引入mongoose,然后定义model(productSchema)然后exports,后定义路由
创建路由:
1) 先在app里面定义一级路由,
var goods = require('./routes/goods')app.use('/goods', goods);2) 在 routes设置子路由,goods.js
var express = require('express');var router = express.Router();var mongoose = require('mongoose');var Goods = require('../models/goods');//加载模型表//连接MongoDB数据库mongoose.connect('mongodb://127.0.0.1:27017/dumall');mongoose.connection.on("connected", function () { console.log("MongoDB connected success.")});mongoose.connection.on("error", function () { console.log("MongoDB connected fail.")});mongoose.connection.on("disconnected", function () { console.log("MongoDB connected disconnected.")});//查询商品列表数据router.get("/list", function (req,res,next) { let page = parseInt(req.param("page")); let pageSize = parseInt(req.param("pageSize")); let priceLevel = req.param("priceLevel"); let sort = req.param("sort"); let skip = (page-1)*pageSize; var priceGt = '',priceLte = ''; let params = {}; if(priceLevel!='all'){ switch (priceLevel){ case '0':priceGt = 0;priceLte=100;break; case '1':priceGt = 100;priceLte=500;break; case '2':priceGt = 500;priceLte=1000;break; case '3':priceGt = 1000;priceLte=5000;break; } params = { salePrice:{ $gt:priceGt, $lte:priceLte } } } let goodsModel = Goods.find(params).skip(skip).limit(pageSize); goodsModel.sort({'salePrice':sort}); goodsModel.exec(function (err,doc) { if(err){ res.json({ status:'1', msg:err.message }); }else{ res.json({ status:'0', msg:'', result:{ count:doc.length, list:doc } }); } })});//加入到购物车router.post("/addCart", function (req,res,next) { var userId = '100000077',productId = req.body.productId; var User = require('../models/user'); User.findOne({userId:userId}, function (err,userDoc) { if(err){ res.json({ status:"1", msg:err.message }) }else{ console.log("userDoc:"+userDoc); if(userDoc){ var goodsItem = ''; userDoc.cartList.forEach(function (item) { if(item.productId == productId){ goodsItem = item; item.productNum ++; } }); if(goodsItem){ userDoc.save(function (err2,doc2) { if(err2){ res.json({ status:"1", msg:err2.message }) }else{ res.json({ status:'0', msg:'', result:'suc' }) } }) }else{ Goods.findOne({productId:productId}, function (err1,doc) { if(err1){ res.json({ status:"1", msg:err1.message }) }else{ if(doc){ doc.productNum = 1; doc.checked = 1; userDoc.cartList.push(doc); userDoc.save(function (err2,doc2) { if(err2){ res.json({ status:"1", msg:err2.message }) }else{ res.json({ status:'0', msg:'', result:'suc' }) } }) } } }); } } } })});module.exports = router;
实现功能:与前端交互时,因为vue用的是8080端口
改成以下,访问接口时转发到3000的node接口
- node.js 之 express框架+MongoDB(前端使用vue)
- Node.js框架之express
- 前端之js框架-vue
- Node.js Web框架之Express
- node.js使用(六):express框架的安装
- node.js-express框架的初步使用。
- 使用Express搭建node.js框架
- Node.js Express框架
- Node.js Express框架
- Node.js Express 框架
- Node.js Express 框架
- node.js express框架
- Node.js Express框架
- Node.js Express框架
- Node.js Express 框架
- Ubuntu12.04 Node.js MongoDb 和 express框架的搭建
- Node.js + Express + MongoDB教程
- Node.js + Express + MongoDB教程
- python与数据分析 pandas 基础
- Fabric.js 简单介绍和使用
- 欢迎使用CSDN-markdown编辑器
- uva583 Prime Factors
- selenium
- node.js 之 express框架+MongoDB(前端使用vue)
- There is no getter for property named 'fieldName' in 'class java.lang.String'
- org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xx' is defined
- curl用法
- html+js实现图片上传前预先预览
- Android上传图片的方式
- 透视函数glFrustum(), gluPerspective()函数用法和glOrtho()函数用法.
- 界面设置——结合vs2015,使用wxFormBuilder
- android基于ffmpeg的简单视频播发器 时间同步