课程代码
This commit is contained in:
90
nodejs/nodeExperiment3/router/userRouter.js
Normal file
90
nodejs/nodeExperiment3/router/userRouter.js
Normal file
@@ -0,0 +1,90 @@
|
||||
const express = require("express");
|
||||
const joi = require("joi");
|
||||
const router = express.Router();
|
||||
|
||||
|
||||
router.get('/userId/:userId', (req, res) => {
|
||||
const userId = req.params.userId;
|
||||
const { error } = joi.number().validate(userId);
|
||||
if (error) {
|
||||
return res.status(400).send('Invalid userID');
|
||||
}
|
||||
res.send(`User Id is ${userId}`);
|
||||
});
|
||||
|
||||
router.get('/userName', (req, res) => {
|
||||
const { name } = req.query;
|
||||
const schema = joi.object({
|
||||
name: joi.string().min(2).max(20).required()
|
||||
});
|
||||
const { error } = schema.validate({ name });
|
||||
if (error) {
|
||||
return res.status(400).send('Invalid user name');
|
||||
}
|
||||
res.send(`User name is ${name}`);
|
||||
});
|
||||
|
||||
|
||||
router.get('/profile', (req, res) => {
|
||||
res.send('This is the user profile page.');
|
||||
});
|
||||
|
||||
router.get('/profile/settings', (req, res) => {
|
||||
res.send('This is the user profile settings page.');
|
||||
});
|
||||
|
||||
|
||||
const scores = [
|
||||
{ name: 'zs', course: 'app', score: 90 },
|
||||
{ name: 'zs', course: 'java', score: 80 },
|
||||
{ name: 'ls', course: 'app', score: 89 },
|
||||
{ name: 'ls', course: 'java', score: 99 },
|
||||
{ name: 'ww', course: 'app', score: 78 },
|
||||
{ name: 'ww', course: 'java', score: 88 },
|
||||
];
|
||||
|
||||
router.get('/myScore', (req, res) => {
|
||||
const name = req.query.name;
|
||||
const result = scores.filter(s => s.name === name);
|
||||
res.json({ name, scores: result });
|
||||
});
|
||||
|
||||
router.get('/showScore', (req, res) => {
|
||||
const sorted = [...scores].sort((a, b) => a.score - b.score);
|
||||
const avg = {};
|
||||
scores.forEach(s => {
|
||||
avg[s.name] = (avg[s.name] || { total: 0, count: 0 });
|
||||
avg[s.name].total += s.score;
|
||||
avg[s.name].count++;
|
||||
});
|
||||
const avgResult = Object.entries(avg).map(([name, data]) => ({
|
||||
name,
|
||||
average: data.total / data.count
|
||||
}));
|
||||
res.json({ "升序排列": sorted, "平均分": avgResult });
|
||||
});
|
||||
|
||||
const moneys = [
|
||||
{ name: '张三', mny: '9k' },
|
||||
{ name: '李四', mny: 15000 },
|
||||
{ name: '王五', mny: '1w' },
|
||||
{ name: '随便', mny: 6666 }
|
||||
];
|
||||
|
||||
|
||||
router.get('/filterMoney', (req, res) => {
|
||||
const parse = (mny) => {
|
||||
if (typeof mny === 'number') return mny;
|
||||
if (mny.endsWith('k')) return parseFloat(mny) * 1000;
|
||||
if (mny.endsWith('w')) return parseFloat(mny) * 10000;
|
||||
return 0;
|
||||
};
|
||||
|
||||
const result = moneys
|
||||
.map(item => ({ ...item, num: parse(item.mny) }))
|
||||
.filter(item => item.num >= 9000)
|
||||
.sort((a, b) => b.num - a.num);
|
||||
res.json(result);
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user