You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

const express = require('express');
const app = express();
const mongoose = require('mongoose');
const xlsx = require('xlsx');
const fs = require('fs');
// 连接MongoDB数据库
mongoose.connect('mongodb://localhost:27017/school', { useNewUrlParser: true, useUnifiedTopology: true });
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('Connected to the database');
// 读取并解析Excel文件
const workbook = xlsx.readFile('students.xlsx');
const sheetName = workbook.SheetNames[0]; // 假设只处理第一个工作表
const worksheet = workbook.Sheets[sheetName];
const studentsData = xlsx.utils.sheet_to_json(worksheet, { header: 1 }); // 将工作表转换为JSON数组第一行是标题
// 创建一个临时数组来存储要保存的学生对象
const studentsToSave = [];
// 遍历数据并创建学生对象
studentsData.forEach((student, index) => {
if (index === 0) return; // 跳过标题行
studentsToSave.push(new Student({
name: student.name,
id: student.id,
// points字段可以从Excel中读取如果存在的话否则使用默认值0
points: student.points ? Number(student.points) : 0
}));
});
// 保存学生数据到数据库
Student.insertMany(studentsToSave, (err) => {
if (err) return console.error('Error saving students to the database:', err);
console.log('Students successfully saved to the database');
});
});
// 定义Student模型
const studentSchema = new mongoose.Schema({
name: String,
id: String,
points: { type: Number, default: 0 }
});
const Student = mongoose.model('Student', studentSchema);
// 创建API端点来提供学生数据
app.get('/api/students', async (req, res) => {
try {
const students = await Student.find();
res.json(students);
} catch (err) {
res.status(500).json({ error: 'Failed to fetch students' });
}
});
// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});