index.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const express = require('express');
  2. const cors = require('cors');
  3. const mongoose = require('mongoose');
  4. const dotenv = require('dotenv');
  5. const path = require('path');
  6. const { publishPersonInfo } = require('./mqtt-handler');
  7. dotenv.config();
  8. const app = express();
  9. app.use(cors());
  10. app.use(express.json());
  11. // 连接到MongoDB数据库
  12. mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost/member-attendance', {
  13. useNewUrlParser: true,
  14. useUnifiedTopology: true
  15. })
  16. .then(() => console.log('Connected to MongoDB'))
  17. .catch(err => console.error('Could not connect to MongoDB:', err));
  18. // 路由
  19. const membersRouter = require('./routes/members');
  20. const attendanceRouter = require('./routes/attendance');
  21. const devicesRouter = require('./routes/devices');
  22. app.use('/api/members', membersRouter);
  23. app.use('/api/attendance', attendanceRouter);
  24. app.use('/api/devices', devicesRouter);
  25. // 示例路由:下发人员信息
  26. app.post('/api/publish-person-info', (req, res) => {
  27. const personInfo = req.body;
  28. publishPersonInfo(personInfo);
  29. res.json({ message: 'Person info published to MQTT' });
  30. });
  31. // 静态文件服务
  32. app.use(express.static(path.join(__dirname, '../public')));
  33. // 处理所有其他路由,返回 index.html
  34. app.get('*', (req, res) => {
  35. res.sendFile(path.join(__dirname, '../public', 'index.html'));
  36. });
  37. const PORT = process.env.PORT || 5000;
  38. app.listen(PORT, () => {
  39. console.log(`Server running on port ${PORT}`);
  40. });