Skip to content

Commit 792ccfc

Browse files
committed
⬆️ Update to modern JavaScript
1 parent 0ca5526 commit 792ccfc

File tree

3 files changed

+89
-79
lines changed

3 files changed

+89
-79
lines changed

app.js

+41-41
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,80 @@
1-
'use strict';
1+
'use strict'
22

3-
var express = require('express');
4-
var timeout = require('connect-timeout');
5-
var path = require('path');
6-
var cookieParser = require('cookie-parser');
7-
var bodyParser = require('body-parser');
8-
var AV = require('leanengine');
3+
const express = require('express')
4+
const timeout = require('connect-timeout')
5+
const path = require('path')
6+
const cookieParser = require('cookie-parser')
7+
const bodyParser = require('body-parser')
8+
const AV = require('leanengine')
99

1010
// Loads cloud function definitions.
1111
// You can split them into several files, but don't forget to load them into the main file.
12-
require('./cloud');
12+
require('./cloud')
1313

14-
var app = express();
14+
const app = express()
1515

1616
// Configures template engine.
17-
app.set('views', path.join(__dirname, 'views'));
18-
app.set('view engine', 'ejs');
17+
app.set('views', path.join(__dirname, 'views'))
18+
app.set('view engine', 'ejs')
1919

2020
// Configures default timeout.
21-
app.use(timeout('15s'));
21+
app.use(timeout('15s'))
2222

2323
// Loads LeanEngine middleware.
24-
app.use(AV.express());
24+
app.use(AV.express())
2525

26-
app.enable('trust proxy');
26+
app.enable('trust proxy')
2727
// Uncomment the following line to redirect all HTTP requests to HTTPS.
28-
// app.use(AV.Cloud.HttpsRedirect());
28+
// app.use(AV.Cloud.HttpsRedirect())
2929

30-
app.use(express.static('public'));
30+
app.use(express.static('public'))
3131

32-
app.use(bodyParser.json());
33-
app.use(bodyParser.urlencoded({ extended: false }));
34-
app.use(cookieParser());
32+
app.use(bodyParser.json())
33+
app.use(bodyParser.urlencoded({ extended: false }))
34+
app.use(cookieParser())
3535

36-
app.get('/', function(req, res) {
37-
res.header('Cache-Control', 'no-cache');
38-
res.render('index', { currentTime: new Date() });
39-
});
36+
app.get('/', (req, res) => {
37+
res.header('Cache-Control', 'no-cache')
38+
res.render('index', { currentTime: new Date() })
39+
})
4040

4141
// You can put routings in multiple files according to their categories.
42-
app.use('/todos', require('./routes/todos'));
42+
app.use('/todos', require('./routes/todos'))
4343

44-
app.use(function(req, res, next) {
44+
app.use((req, res, next) => {
4545
// If there is no routing answering, throw a 404 exception to exception handlers.
4646
if (!res.headersSent) {
47-
var err = new Error('Not Found');
48-
err.status = 404;
49-
next(err);
47+
const err = new Error('Not Found')
48+
err.status = 404
49+
next(err)
5050
}
51-
});
51+
})
5252

53-
// error handlers
54-
app.use(function(err, req, res, next) {
53+
// error handler
54+
app.use((err, req, res, next) => {
5555
if (req.timedout && req.headers.upgrade === 'websocket') {
5656
// Ignores websocket timeout.
57-
return;
57+
return
5858
}
5959

60-
var statusCode = err.status || 500;
60+
const statusCode = err.status || 500
6161
if (statusCode === 500) {
62-
console.error(err.stack || err);
62+
console.error(err.stack || err)
6363
}
6464
if (req.timedout) {
65-
console.error('Request timeout: url=%s, timeout=%d, please check whether its execution time is too long, or the response callback is invalid.', req.originalUrl, err.timeout);
65+
console.error('Request timeout: url=%s, timeout=%d, please check whether its execution time is too long, or the response callback is invalid.', req.originalUrl, err.timeout)
6666
}
67-
res.status(statusCode);
67+
res.status(statusCode)
6868
// Do not output exception details by default.
69-
var error = {};
69+
let error = {}
7070
if (app.get('env') === 'development') {
7171
// Displays exception stack on page if running in the development enviroment.
72-
error = err;
72+
error = err
7373
}
7474
res.render('error', {
7575
message: err.message,
7676
error: error
77-
});
78-
});
77+
})
78+
})
7979

80-
module.exports = app;
80+
module.exports = app

routes/todos.js

+34-24
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,49 @@
1-
'use strict';
2-
var router = require('express').Router();
3-
var AV = require('leanengine');
1+
'use strict'
42

5-
var Todo = AV.Object.extend('Todo');
3+
const router = require('express').Router()
4+
const AV = require('leanengine')
5+
6+
const Todo = AV.Object.extend('Todo')
67

78
// Todo list
8-
router.get('/', function(req, res, next) {
9-
var query = new AV.Query(Todo);
10-
query.descending('createdAt');
11-
query.find().then(function(results) {
9+
router.get('/', async (req, res, next) => {
10+
try {
11+
const query = new AV.Query(Todo)
12+
query.descending('createdAt')
13+
14+
const results = await query.find()
15+
1216
res.render('todos', {
1317
title: 'TODO 列表',
1418
todos: results
15-
});
16-
}, function(err) {
19+
})
20+
} catch (err) {
1721
if (err.code === 101) {
1822
// Todo class does not exist in the cloud yet.
1923
res.render('todos', {
2024
title: 'TODO 列表',
2125
todos: []
22-
});
26+
})
2327
} else {
24-
next(err);
28+
next(err)
2529
}
26-
}).catch(next);
27-
});
30+
}
31+
})
2832

2933
// Creates a new todo item.
30-
router.post('/', function(req, res, next) {
31-
var content = req.body.content;
32-
var todo = new Todo();
33-
todo.set('content', content);
34-
todo.save().then(function(todo) {
35-
res.redirect('/todos');
36-
}).catch(next);
37-
});
38-
39-
module.exports = router;
34+
router.post('/', async (req, res, next) => {
35+
try {
36+
const content = req.body.content
37+
const todo = new Todo()
38+
39+
todo.set('content', content)
40+
41+
await todo.save()
42+
43+
res.redirect('/todos')
44+
} catch (err) {
45+
next(err)
46+
}
47+
})
48+
49+
module.exports = router

server.js

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
'use strict';
1+
'use strict'
22

3-
var AV = require('leanengine');
3+
const AV = require('leanengine')
44

55
AV.init({
66
appId: process.env.LEANCLOUD_APP_ID,
77
appKey: process.env.LEANCLOUD_APP_KEY,
88
masterKey: process.env.LEANCLOUD_APP_MASTER_KEY
9-
});
9+
})
1010

1111
// Comment the following line if you do not want to use masterKey.
12-
AV.Cloud.useMasterKey();
12+
AV.Cloud.useMasterKey()
1313

14-
var app = require('./app');
14+
const app = require('./app')
1515

1616
// Retrieves the port number from environment variable `LEANCLOUD_APP_PORT`.
1717
// LeanEngine runtime will assign a port and set the environment variable automatically.
18-
var PORT = parseInt(process.env.LEANCLOUD_APP_PORT || process.env.PORT || 3000);
18+
const PORT = parseInt(process.env.LEANCLOUD_APP_PORT || process.env.PORT || 3000)
1919

20-
app.listen(PORT, function (err) {
21-
console.log('Node app is running on port:', PORT);
20+
app.listen(PORT, (err) => {
21+
console.log('Node app is running on port:', PORT)
2222

2323
// Registers a global exception handler for uncaught exceptions.
24-
process.on('uncaughtException', function(err) {
25-
console.error('Caught exception:', err.stack);
24+
process.on('uncaughtException', err => {
25+
console.error('Caught exception:', err.stack)
2626
});
27-
process.on('unhandledRejection', function(reason, p) {
28-
console.error('Unhandled Rejection at: Promise ', p, ' reason: ', reason.stack);
29-
});
30-
});
27+
process.on('unhandledRejection', (reason, p) => {
28+
console.error('Unhandled Rejection at: Promise ', p, ' reason: ', reason.stack)
29+
})
30+
})

0 commit comments

Comments
 (0)