express连接数据库、上传图片总结

来源:互联网 发布:国家授时中心网络时间 编辑:程序博客网 时间:2024/05/22 16:43

1、app.js代码

var express = require('express');var path = require('path');var favicon = require('serve-favicon');var logger = require('morgan');var cookieParser = require('cookie-parser');var session = require('express-session');var bodyParser = require('body-parser');var ejs = require('ejs');//数据库操作var MongoClient = require('mongodb').MongoClient;var DbUrl = 'mongodb://127.0.0.1:27017/productmanage';/*连接数据库*/// 文件上传var multiparty = require('multiparty');// 数据库操作var DB=require('./routes/db');// 业务模块引入var index = require('./routes/index');var users = require('./routes/users');var login = require('./routes/login/login');var product = require('./routes/product/product');// 实例化var app = express();// 设置模板引擎app.set('views', path.join(__dirname, 'views'));// 注册 html  模板引擎代码如下:app.engine('html', ejs.__express);app.set('view engine', 'html');app.use(logger('dev'));app.use(bodyParser.json());app.use(bodyParser.urlencoded({extended: false}));app.use(cookieParser());// 设置sessionapp.use(session({    secret: '12345',    name: 'hahaha',    cookie: {maxAge: 60000},    resave: false,    saveUninitialized: true}));// 静态资源路径app.use(express.static(path.join(__dirname, 'public')));// 上传图片路径app.use('/upload', express.static('upload'));// 路由模块app.get('/', function (req, res) {    console.log("index");    res.send('index');});app.get('/login', function (req, res) {    res.render('login/login');});// 登录接口app.post('/login', function (req, res) {    // 获取登录入参    var username = req.body.username;    var password = req.body.password;    console.log("username:" + username);    console.log("password:" + password);    //1.获取数据    //2.连接数据库查询数据    MongoClient.connect(DbUrl, function (err, db) {        if (err) {            console.log(err);            return;        }        var result = db.collection('user').find(req.body);        //另一种遍历数据的方法        result.toArray(function (err, data) {            console.log(data);            if (data.length > 0) {                console.log('登录成功');                //保存用户信息                req.session.userinfo = data[0];                res.redirect('/product');                /*登录成功跳转到商品列表*/            } else {                //console.log('登录失败');                res.send("<script>alert('登录失败');location.href='/login'</script>");            }            db.close();        })    })});app.get('/product', function (req, res) {    var username = req.session.userInfo.username;    var password = req.session.userInfo.password;    res.send("已经进入商品页面---》你好:" + username + "   " + password);    // res.render('product/product');});//获取表单提交的数据 以及post过来的图片app.post('/uploadImage', function (req, res) {    //获取表单的数据 以及post过来的图片    var form = new multiparty.Form();    form.uploadDir = 'upload';   //上传图片保存的地址     目录必须存在    form.parse(req, function (err, fields, files) {        //获取提交的数据以及图片上传成功返回的图片信息        console.log(fields);  // 获取表单的数据        console.log(files);  // 图片上传成功返回的信息        var title = fields.title[0];        var price = fields.price[0];        var fee = fields.fee[0];        var description = fields.description[0];        var pic = files.pic[0].path;        DB.insert('product', {            title: title,            price: price,            fee: fee,            description: description,            pic: pic        }, function (err, data) {            if (!err) {                res.send("商品数据库插入成功!!!");                /*上传成功跳转到首页*/            }        })    });});// 404处理app.use(function (req, res, next) {    var err = new Error('Not Found');    err.status = 404;    next(err);});// 错误处理app.use(function (err, req, res, next) {    res.locals.message = err.message;    res.locals.error = req.app.get('env') === 'development' ? err : {};    res.status(err.status || 500);    res.render('error');});module.exports = app;
2、测试页面代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"        "http://www.w3.org/TR/html4/loose.dtd"><html><head>    <title></title></head><body><h2>登录页面</h2><form action="/uploadImage" method="post" enctype="multipart/form-data">    商品名称: <input type="text" name="title"/><br/><br/>    商品图片: <input type="file" name="pic"/><br/><br/>    商品价格: <input type="text" name="price"/><br/><br/>    商品邮费: <input type="text" name="fee"/><br/><br/>    商品描述:    <textarea name="description" id="" cols="60" rows="8"></textarea>    <input type="submit" value="登录"/></form></body></html>
3、数据库连接代码

var MongoClient = require('mongodb').MongoClient;var DbUrl = 'mongodb://localhost:27017/productmanage';/*连接数据库*/var ObjectID = require('mongodb').ObjectID;function __connectDb(callback) {    MongoClient.connect(DbUrl, function (err, db) {        if (err) {            console.log('数据库连接失败');            return;        }        //增加 修改 删除        callback(db);    })}//暴露 ObjectIDexports.ObjectID = ObjectID;//数据库查找/* Db.find('user',{},function(err,data){ data数据 }) */exports.find = function (collectionname, json, callback) {    __connectDb(function (db) {        var result = db.collection(collectionname).find(json);        result.toArray(function (error, data) {            db.close();            /*关闭数据库连接*/            callback(error, data);            /*拿到数据执行回调函数*/        })    })}//增加数据exports.insert = function (collectionname, json, callback) {    __connectDb(function (db) {        db.collection(collectionname).insertOne(json, function (error, data) {            callback(error, data);        })    })}//增加数据exports.update = function (collectionname, json1, json2, callback) {    __connectDb(function (db) {        db.collection(collectionname).updateOne(json1, {$set: json2}, function (error, data) {            callback(error, data);        })    })}//删除数据exports.deleteOne = function (collectionname, json, callback) {    __connectDb(function (db) {        db.collection(collectionname).deleteOne(json, function (error, data) {            callback(error, data);        })    })}




原创粉丝点击