Quellcode durchsuchen

增加中间件 路由配置

maguohua vor 8 Jahren
Ursprung
Commit
61c0a40907
72 geänderte Dateien mit 327 neuen und 78 gelöschten Zeilen
  1. 70 2
      README.md
  2. 66 2
      app.js
  3. 10 1
      config/default.js
  4. 4 0
      logs/.gitignore
  5. 22 0
      middlewares/userStatus.js
  6. 10 70
      mongodb/db.js
  7. 5 2
      package.json
  8. BIN
      public/elm/favicon.ico
  9. 72 0
      public/elm/index.html
  10. 1 0
      public/elm/static/css/app.css
  11. BIN
      public/elm/static/img/activity.png
  12. 0 0
      public/elm/static/js/add.9e81174675a2fe28e4ba.min.js
  13. 0 0
      public/elm/static/js/addAddress.499e26f2be5baaf54fda.min.js
  14. 0 0
      public/elm/static/js/addDetail.ecc375d936f5748725fb.min.js
  15. 0 0
      public/elm/static/js/address.503261e1c36148acf368.min.js
  16. 0 0
      public/elm/static/js/app.js
  17. 0 0
      public/elm/static/js/balance.33c11b9d641453f45ddc.min.js
  18. 0 0
      public/elm/static/js/balanceDetail.05e987e4abf92d6c6815.min.js
  19. 0 0
      public/elm/static/js/benefit.59caaf0a4096185913f0.min.js
  20. 0 0
      public/elm/static/js/chooseAddress.5ef32b3a4a76faf51ec7.min.js
  21. 0 0
      public/elm/static/js/city.776cd1b7e91ebb036f98.min.js
  22. 0 0
      public/elm/static/js/commend.149468c62e0c536b60d2.min.js
  23. 0 0
      public/elm/static/js/confirmOrder.dc269dd54c25c465c38e.min.js
  24. 0 0
      public/elm/static/js/coupon.5c6270ba6744dca14c13.min.js
  25. 0 0
      public/elm/static/js/download.63c6ef04a9e9daea03d0.min.js
  26. 0 0
      public/elm/static/js/exchange.b686dab63feed9a03289.min.js
  27. 0 0
      public/elm/static/js/find.53e7e81da782f34255b8.min.js
  28. 0 0
      public/elm/static/js/food.65e62d4d4c63079481d1.min.js
  29. 0 0
      public/elm/static/js/foodDetail.ddd0d98f41293071fcb4.min.js
  30. 0 0
      public/elm/static/js/forget.ca0dee43ae9b1bcee61d.min.js
  31. 0 0
      public/elm/static/js/hbDescription.a522fca94335dd069525.min.js
  32. 0 0
      public/elm/static/js/hbHistory.7d23f0574cef99cba753.min.js
  33. 0 0
      public/elm/static/js/home.993026ceebbb14e9bb41.min.js
  34. 0 0
      public/elm/static/js/info.cfe87987c75face0c5ff.min.js
  35. 0 0
      public/elm/static/js/invoice.5a2825e421987595c488.min.js
  36. 0 0
      public/elm/static/js/invoiceRecord.53d6d9b2ff8b69be54c8.min.js
  37. 0 0
      public/elm/static/js/login.70722b0206325c06b0b7.min.js
  38. 0 0
      public/elm/static/js/manifest.js
  39. 0 0
      public/elm/static/js/msite.5757d01abf3ab1ccd185.min.js
  40. 0 0
      public/elm/static/js/order.978cbf3bd01f2d4c04ff.min.js
  41. 0 0
      public/elm/static/js/orderDetail.e5adadb78b495de5682e.min.js
  42. 0 0
      public/elm/static/js/payment.aa579e61127b4532ff97.min.js
  43. 0 0
      public/elm/static/js/points.8378c91f5da6c989b421.min.js
  44. 0 0
      public/elm/static/js/pointsDetail.eb5330cbbe9e4713219a.min.js
  45. 0 0
      public/elm/static/js/profile.4cb10b774f1be7c66ca7.min.js
  46. 0 0
      public/elm/static/js/questionDetail.a3fd339397ed7e9faa8f.min.js
  47. 0 0
      public/elm/static/js/remark.1f5ca561244ad7e9d797.min.js
  48. 0 0
      public/elm/static/js/search.fc3a72f64317d7d26769.min.js
  49. 0 0
      public/elm/static/js/searchAddress.2851467e375d9c1ec764.min.js
  50. 0 0
      public/elm/static/js/service.ecdb0692614416ee9c20.min.js
  51. 0 0
      public/elm/static/js/setusername.c630011bea35f9c1c46c.min.js
  52. 0 0
      public/elm/static/js/shop.ca304dd0fc3cd679fb57.min.js
  53. 0 0
      public/elm/static/js/shopDetail.f38c52209d6b6e3dc19f.min.js
  54. 0 0
      public/elm/static/js/shopSafe.38a103703b5fe4c668de.min.js
  55. 0 0
      public/elm/static/js/useCart.b54228da880ede6e84c4.min.js
  56. 0 0
      public/elm/static/js/userValidation.ec0d6bedcabde3684be2.min.js
  57. 0 0
      public/elm/static/js/vendor.js
  58. 0 0
      public/elm/static/js/vipDescription.3e777d02286527f7d0fc.min.js
  59. 0 0
      public/elm/static/js/vipcard.6610d4ae146be4f4e9c0.min.js
  60. 4 0
      routes/bos.js
  61. 4 0
      routes/eus.js
  62. 13 1
      routes/home.js
  63. 4 0
      routes/member.js
  64. 4 0
      routes/payapi.js
  65. 4 0
      routes/promotion.js
  66. 4 0
      routes/shopping.js
  67. 4 0
      routes/ugc.js
  68. 4 0
      routes/v1.js
  69. 4 0
      routes/v2.js
  70. 4 0
      routes/v3.js
  71. 4 0
      routes/v4.js
  72. 10 0
      views/home.ejs

+ 70 - 2
README.md

@@ -16,7 +16,7 @@
 
 ## 技术栈
 
-nodejs + express + mongodb + es6/7 + mocha + bluebird + ejs + bootstrap
+nodejs + express + mongodb + mongoose + es6/7 + mocha + bluebird + ejs + bootstrap
 
 
 # 项目运行
@@ -38,7 +38,7 @@ npm run dev  访问: http://localhost:3000
 
 # 部署
 
-部署服务器采用百度应用引擎BAE基础版
+部署服务器--百度应用引擎BAE基础版
 
 部署方式:[百度BAE部署](https://cloud.baidu.com/doc/BAE/GUIGettingStarted.html) 
 
@@ -46,6 +46,7 @@ npm run dev  访问: http://localhost:3000
 
 
 
+
 # 目标功能
 
 - [ ] 静态数据
@@ -76,3 +77,70 @@ npm run dev  访问: http://localhost:3000
 - [ ] 调用微信支付
 - [ ] 后台管理系统
 - [ ] 部署上线
+
+
+# 项目布局
+.
+├── config                                  // 配置文件目录
+│   ├── default.js                          // 默认配置
+│   └── production.js                       // 生产环节配置文件
+├── controller                              // 负责路由操作的具体执行
+│   ├── bos
+│   ├── eus
+│   ├── food.js
+│   ├── member
+│   ├── payapi
+│   ├── promotion
+│   ├── shopping
+│   ├── ugc
+│   ├── v1
+│   ├── v2
+│   ├── v3
+│   └── v4
+├── logs                                    // 日志文件
+│   └── success.log
+├── middlewares                             // 路由中间件
+│   └── userStatus.js
+├── models                                  // 数据模型
+│   ├── bos
+│   ├── eus
+│   ├── food.js
+│   ├── member
+│   ├── payapi
+│   ├── promotion
+│   ├── shopping
+│   ├── ugc
+│   ├── v1
+│   ├── v2
+│   ├── v3
+│   └── v4
+├── mongodb                                  // 连接 mongodb
+│   └── db.js
+├── public                                   // 静态资源目录
+│   ├── css
+│   ├── elm                                  // 前端项目地址
+│   ├── img
+│   └── js
+├── routes                                   // 路由控制中心
+│   ├── bos.js
+│   ├── eus.js
+│   ├── home.js
+│   ├── index.js
+│   ├── member.js
+│   ├── payapi.js
+│   ├── promotion.js
+│   ├── shopping.js
+│   ├── ugc.js
+│   ├── v1.js
+│   ├── v2.js
+│   ├── v3.js
+│   └── v4.js
+├─── test                                    // 测试
+├─── views                                   // 后台管理系统页面
+├── .babelrc                                 // 配置babel
+├── .gitignore                               // 设置忽略文件
+├── app.conf                                 // 百度BAE部署所需配置文件
+├── app.js                                   // 基础配置
+├── index.js                                 // 入口
+├── package.json                             // 配置文件
+.

+ 66 - 2
app.js

@@ -2,10 +2,74 @@ import express from 'express';
 import db from './mongodb/db.js';
 import config from 'config-lite';
 import router from './routes/index.js';
+import session from 'express-session';
+import connectMongo from 'connect-mongo';
+import flash from 'connect-flash';
+import winston from 'winston';
+import expressWinston from 'express-winston';
+import path from 'path';
+
+
 const app = express();
 
-app.use(express.static('./public'))
+app.all('*', (req, res, next) => {
+  	res.header("Access-Control-Allow-Origin", "*");
+  	res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
+  	res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
+  	res.header("X-Powered-By",' 3.2.1')
+  	if(req.method=="OPTIONS") res.send(200);/*让options请求快速返回*/
+  	else  next();
+});
+
+app.use(express.static('./public'));
+app.use(flash());
+const MongoStore = connectMongo(session);
+
+app.use(session({
+	name: config.session.name,
+  	secret: config.session.secret,
+  	resave: true,
+  	saveUninitialized: false,
+  	cookie: config.session.cookie,
+  	store: new MongoStore({
+    	url: config.url
+  	})
+}))
+
+app.use((req, res, next) => {
+  res.locals.user = req.session.user;
+  res.locals.success = req.flash('success').toString();
+  res.locals.error = req.flash('error').toString();
+  next();
+});
+
+app.use(expressWinston.logger({
+  transports: [
+    new (winston.transports.Console)({
+      json: true,
+      colorize: true
+    }),
+    new winston.transports.File({
+      filename: 'logs/success.log'
+    })
+  ]
+}));
 
 router(app);
 
-app.listen(config.port)
+app.use(expressWinston.errorLogger({
+  transports: [
+    new winston.transports.Console({
+      json: true,
+      colorize: true
+    }),
+    new winston.transports.File({
+      filename: 'logs/error.log'
+    })
+  ]
+}));
+
+app.use((err, req, res, next) => {
+	res.send('未找到当前路由');
+});
+app.listen(config.port);

+ 10 - 1
config/default.js

@@ -2,5 +2,14 @@
 
 export default {
 	port: 3000,
-	url: 'mongodb://localhost:27017/bae'
+	url: 'mongodb://localhost:27017/elm',
+	session: {
+		name: 'elm',
+		secret: 'elm',
+		cookie: {
+			httpOnly: true,
+		    secure:   false,
+		    maxAge:   365 * 24 * 60 * 60 * 1000,
+		}
+	}
 }

+ 4 - 0
logs/.gitignore

@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore

+ 22 - 0
middlewares/userStatus.js

@@ -0,0 +1,22 @@
+'use strict';
+
+class UserStatus {
+	constructor(){
+		
+	}
+	login(req, res, next){
+		/*
+		已登陆则返回
+		 */
+		if (req.session.user) {
+			req.flash('error', '已登录');
+			res.redirect('back'); 
+		}else{
+			req.flash('error', '未登录');
+			res.redirect('/signin');
+		}
+		next();
+	}
+}
+
+export default new UserStatus();

+ 10 - 70
mongodb/db.js

@@ -2,7 +2,7 @@
 
 import mongoose from 'mongoose';
 import config from 'config-lite';
-mongoose.connect(config.url);
+mongoose.connect(config.url, {server:{auto_reconnect:true}});
 mongoose.Promise = global.Promise;
 
 const db = mongoose.connection;
@@ -11,74 +11,14 @@ db.once('open' ,() => {
 	console.log('连接数据成功')
 })
 
-export default db;
-
-
-// var mongoose = require('mongoose');
-// var util = require("util");
-
-// function MongooseKeeper() {
-//     this.db = mongoose.createConnection();
-//     this.open_count = 0;
-// }
-// MongooseKeeper.prototype.config = function(conf) {
-//     // body...
-//     var options = {
-//         db: { native_parser: true },
-//         server: {
-//             poolSize:4
-//         }
-//     };
-
+db.on('error', function(error) {
+    console.error('Error in MongoDb connection: ' + error);
+    mongoose.disconnect();
+});
 
-//     var constr = "";
-//     if(process.env.MONGO_DB_STR){
-//         constr = process.env.MONGO_DB_STR ;
-//     }
-//     else{
-//         //'mongodb://user:pass@localhost:port/database'
-//         constr = util.format('mongodb://%s:%s@%s:%d/%s', conf.userid,conf.password,conf.host,conf.port,conf.database);
-//     }
-//     this.dbUri = constr;
-//     this.options = options;
-  
-// }
-// MongooseKeeper.prototype.open =function() {
+db.on('close', function() {
+    console.log('数据库断开,重新连接数据库');
+    mongoose.connect(config.url, {server:{auto_reconnect:true}});
+});
 
-//     this.open_count++;
-//     if(this.open_count ==1 && this.db.readyState == 0)
-//     {        
-//         this.db.open(this.dbUri,this.options,function() {
-//             // body...
-//             console.log("db opened");
-//         });
-//     }
-// }
-// MongooseKeeper.prototype.close =function() {
-
-//     this.open_count--;
-//     if(this.open_count == 0 )
-//     {
-//         this.db.close(function(){
-//             console.log("db closed");
-//         });
-//     }
-  
-
-
-// }
-// MongooseKeeper.prototype.use = function(action,callback) {
-//     //OPEN
-//     var self = this;
-//     self.open();
-//     action.call(null,function() {
-//         //CLOSE
-//         console.log("正在访问的数据库请求量"+self.open_count);
-//         self.close();
-//         callback.apply(null, arguments);
-//         //DONE
-//         self =null;
-//     })
-// };
-
-// exports = module.exports = new MongooseKeeper();
+export default db;

+ 5 - 2
package.json

@@ -12,7 +12,7 @@
     "type": "git",
     "url": "https://github.com/bailicangdu/node-elm"
   },
-  "author": "",
+  "author": "cangdu",
   "license": "ISC",
   "dependencies": {
     "babel": "^6.23.0",
@@ -24,8 +24,10 @@
     "bluebird": "^3.5.0",
     "config-lite": "^1.5.0",
     "connect-flash": "^0.1.1",
+    "connect-mongo": "^1.3.2",
     "express": "^4.15.2",
     "express-session": "^1.15.2",
+    "express-winston": "^2.3.0",
     "formidable": "^1.1.1",
     "marked": "^0.3.6",
     "moment": "^2.18.1",
@@ -33,7 +35,8 @@
     "mongoose": "^4.9.3",
     "pm2": "^2.4.3",
     "sha1": "^1.1.1",
-    "supervisor": "^0.12.0"
+    "supervisor": "^0.12.0",
+    "winston": "^2.3.1"
   },
   "devDependencies": {
     "babel-plugin-transform-async-to-generator": "^6.24.1",

BIN
public/elm/favicon.ico


Datei-Diff unterdrückt, da er zu groß ist
+ 72 - 0
public/elm/index.html


+ 1 - 0
public/elm/static/css/app.css

@@ -0,0 +1 @@
+a,article,aside,b,body,button,dd,div,dl,dt,figcaption,figure,footer,h1,h2,h3,h4,h5,h6,header,i,input,li,nav,p,section,select,span,textarea,ul{padding:0;margin:0;list-style:none;font-style:normal;text-decoration:none;border:none;color:#333;box-sizing:border-box;font-family:Microsoft Yahei,sans-serif;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased}a:focus,article:focus,aside:focus,b:focus,body:focus,button:focus,dd:focus,div:focus,dl:focus,dt:focus,figcaption:focus,figure:focus,footer:focus,h1:focus,h2:focus,h3:focus,h4:focus,h5:focus,h6:focus,header:focus,i:focus,input:focus,li:focus,nav:focus,p:focus,section:focus,select:focus,span:focus,textarea:focus,ul:focus{outline:none}::-webkit-scrollbar{width:0;height:0;background-color:#f5f5f5}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 1px transparent;border-radius:10px;background-color:#f5f5f5}::-webkit-scrollbar-thumb{border-radius:10px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#555}input[type=button],input[type=reset],input[type=search],input[type=submit],textarea{-webkit-appearance:none}body,html{height:100%;width:100%;background-color:#f5f5f5}.clear:after{content:'';display:block;clear:both}.clear{zoom:1}.back_img{background-repeat:no-repeat;background-size:100% 100%}.margin{margin:0 auto}.left{float:left}.right{float:right}.hide{display:none}.show{display:block}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paddingTop{padding-top:1.95rem}.router-fade-enter-active,.router-fade-leave-active{-webkit-transition:opacity .3s;transition:opacity .3s}.router-fade-enter,.router-fade-leave-active{opacity:0}

BIN
public/elm/static/img/activity.png


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/add.9e81174675a2fe28e4ba.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/addAddress.499e26f2be5baaf54fda.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/addDetail.ecc375d936f5748725fb.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/address.503261e1c36148acf368.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/app.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/balance.33c11b9d641453f45ddc.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/balanceDetail.05e987e4abf92d6c6815.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/benefit.59caaf0a4096185913f0.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/chooseAddress.5ef32b3a4a76faf51ec7.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/city.776cd1b7e91ebb036f98.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/commend.149468c62e0c536b60d2.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/confirmOrder.dc269dd54c25c465c38e.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/coupon.5c6270ba6744dca14c13.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/download.63c6ef04a9e9daea03d0.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/exchange.b686dab63feed9a03289.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/find.53e7e81da782f34255b8.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/food.65e62d4d4c63079481d1.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/foodDetail.ddd0d98f41293071fcb4.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/forget.ca0dee43ae9b1bcee61d.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/hbDescription.a522fca94335dd069525.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/hbHistory.7d23f0574cef99cba753.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/home.993026ceebbb14e9bb41.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/info.cfe87987c75face0c5ff.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/invoice.5a2825e421987595c488.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/invoiceRecord.53d6d9b2ff8b69be54c8.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/login.70722b0206325c06b0b7.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/manifest.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/msite.5757d01abf3ab1ccd185.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/order.978cbf3bd01f2d4c04ff.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/orderDetail.e5adadb78b495de5682e.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/payment.aa579e61127b4532ff97.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/points.8378c91f5da6c989b421.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/pointsDetail.eb5330cbbe9e4713219a.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/profile.4cb10b774f1be7c66ca7.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/questionDetail.a3fd339397ed7e9faa8f.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/remark.1f5ca561244ad7e9d797.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/search.fc3a72f64317d7d26769.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/searchAddress.2851467e375d9c1ec764.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/service.ecdb0692614416ee9c20.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/setusername.c630011bea35f9c1c46c.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/shop.ca304dd0fc3cd679fb57.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/shopDetail.f38c52209d6b6e3dc19f.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/shopSafe.38a103703b5fe4c668de.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/useCart.b54228da880ede6e84c4.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/userValidation.ec0d6bedcabde3684be2.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/vendor.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/vipDescription.3e777d02286527f7d0fc.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
public/elm/static/js/vipcard.6610d4ae146be4f4e9c0.min.js


+ 4 - 0
routes/bos.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 4 - 0
routes/eus.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 13 - 1
routes/home.js

@@ -6,9 +6,21 @@ const router = express.Router();
 
 router.get('/', async (req, res) => {
 	
-	const foods = await Food.findOne();
+	let foods = await Food.findOne();
+	if(!foods){
+		const test = new Food({name: '测试'});
+		try{
+			await test.save();
+			foods = await Food.findOne();
+		}catch(err){
+			throw new Error(err);
+		}
+	}
 	res.send(foods.toString());
 	
 });
 
+router.get('/a', (req, res, next) => {
+	res.json({a: 1111})
+})
 export default router;

+ 4 - 0
routes/member.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 4 - 0
routes/payapi.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 4 - 0
routes/promotion.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 4 - 0
routes/shopping.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 4 - 0
routes/ugc.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 4 - 0
routes/v1.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 4 - 0
routes/v2.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 4 - 0
routes/v3.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 4 - 0
routes/v4.js

@@ -0,0 +1,4 @@
+'use strict';
+
+import express from 'express';
+const router = express.Router();

+ 10 - 0
views/home.ejs

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>首页</title>
+</head>
+<body>
+	
+</body>
+</html>

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.