作为一个有志的前端,怎能不搞全(壮)栈(bi)。..做吧,后端用node,数据库用mongodb,前端,呃,搭建一个nodeweb框架express。主意已定。让我们开始构建我们的环境。在构建之前,让我们来看看我们的目标。项目目标及成果1、下载mongodbmongodb官网:https://www.mongodb.com/downl...下载代码后,进入bin文件夹,启动./mongod,打开一个新终端(terminal),启动./mongo至此我们的数据库就搭建好了,我迫不及待的想增(zhuang)删(bi)改(da)查(fa)了。这时候,有同学就有疑惑了。你不是猫鼬吗?和mongodb有什么关系?看下面的图片。简单的说,我moogoose可以随意蹂躏你mongodb里面的数据。2.建立数据结构,首先让我们连接到我们的数据库,然后让我们定义数据结构,然后创建一个模型(在mongoose中称为文档)//数据库连接varuuid=require('node-uuid');varmongoose=require('mongoose');mongoose.connect('mongodb://127.0.0.1:27017/mart');vardb=mongoose.connection;db.on('error',console.error.bind(控制台,'connectionerror:'));db.once('open',function(){console.log('weareconnected');});//Schema定义数据的数据结构varProductSchema=mongoose.Schema({id:{type:String,default:uuid.v1},name:String,price:Number,url:String});//Schema只定义数据结构,数据的处理需要model实现varProduct=mongoose.model('Product',ProductSchema);module.exports=产品;3.建立前端页面、路由和请求接口。node+express的搭建这里就不详细介绍了。给大家洒水。varexpress=require('express');varpath=require('path');varrouter=require('./routes');varbodyParser=require('body-parser');varapp=express();//视图引擎setapp.set('views',path.join(__dirname,'views'));app.set('viewengine','ejs');//解析application/x-www-form-urlencodedapp.use(bodyParser.urlencoded({extended:false}))//解析application/jsonapp.use(bodyParser.json())//托管静态文件app.use(express.static('public'));app.use('/',router);varserver=app.listen(3000,function(){varhost=server.address().address;varport=server.address().port;console.log('Exampleapplisteningathttp://%s:%s',主机,端口);});定义增删改查的接口类型和路由跳转。因为懒,先把接口和路由写在一起。varexpress=require('express');varrouter=express.Router();varproductModel=require('../mongoose');router.get('/',function(req,res){res.redirect('/list');})router.get('/list',function(req,res){varlist=[];productModel.find(function(err,products){list=products;res.render('list',{list})});})//添加产品router.post('/admin/add/product',function(req,res){varitem=req.body;varproduct=newproductModel(req.body);product.save(function(err){res.send({code:'success',data:{}})});})//编辑商品router.post('/admin/edit/product',function(req,res){varitem=req.body;console.log(item);productModel.update({_id:item.id},item,function(err){res.send({code:'success',data:{}})});})//删除商品router.post('/admin/delete/product',function(req,res){console.log(req.body.id);productModel.findByIdAndRemove({_id:req.body.id},{},function(){res.send({code:'success',data:{}})})})//搜索商品router.get('/list/search',function(req,res){varlist=[],price={};if(req.query.price1)price.$gte=req.query.price1;如果(req.query.price2)price.$lte=req.query.price2;productModel.find({price},function(err,products){list=产品;res.render('list',{list})});})module.exports=router;mongoose是如何操作数据库的,可以去官网查看API,http://mongoosejs.com/结束语我们简单的全栈之旅就结束了。是不是很简单?大家是不是很兴奋(我现在是全栈TMD,2333333333)。提供一个简单的思路github地址:https://github.com/warplan/no...欢迎大家交流前端技术。如果喜欢,请给我一个小星星。
