Files
studycode/nodejs/nodeExperiment3/router/userRouter.js
2025-12-03 23:08:39 +08:00

90 lines
2.5 KiB
JavaScript

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;