网站首页/ 信息中心/ 档案百科/

从零搭建零门槛轻量级Node.js+MySQL养老院档案管理系统全步骤

发布时间:2026年09月16日 02:25:20 浏览量:0

一、前置准备:5分钟完成环境安装

1. Node.js环境

下载地址:https://nodejs.org/dist/v18.20.4/node-v18.20.4-x64.msi(Windows64位),其他版本去官网首页的「Download」区域按系统选LTS长期维护版。

安装时全程默认选项,安装完成后打开cmd(Windows)或终端(Mac/Linux),输入node -v和npm -v,出现v18.x.x和9.x.x版本号即为成功。

2. MySQL数据库

下载地址:https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.39.0.msi(Windows64位),Mac/Linux选官网对应LTS版本。

安装选「Developer Default」,中间必须记住设置的root密码(建议设为简单但不常用的,比如elder12345),其余选项默认,安装完成后启动MySQL服务:Windows任务栏搜索「Services.msc」,找到「MySQL80」右键启动;Mac用brew services start mysql;Linux用systemctl start mysqld。

3. VS Code编辑器

下载地址:https://code.visualstudio.com/Download,按系统安装即可。

二、项目初始化与依赖安装

在桌面新建文件夹命名为elder-care-archive,右键打开VS Code,选择「文件」-「打开文件夹」选中该文件夹。

打开VS Code内置终端(快捷键Ctrl+`),依次输入以下3条命令:

三、数据库建库建表

打开cmd(Windows),输入mysql -u root -p,输入之前设置的root密码(输入时不显示字符,直接回车),进入MySQL命令行,依次执行以下SQL语句(每条以;结尾):

```sql CREATE DATABASE elder_care_archive DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE elder_care_archive; CREATE TABLE elder ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, gender ENUM('男','女') NOT NULL, birth DATE NOT NULL, id_card VARCHAR(18) NOT NULL UNIQUE, phone VARCHAR(11) NOT NULL, room VARCHAR(10) NOT NULL, guardian_name VARCHAR(20) NOT NULL, guardian_phone VARCHAR(11) NOT NULL, entry_date DATE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ```

从零搭建零门槛轻量级Node.js+MySQL养老院档案管理系统全步骤

执行成功后输入exit退出MySQL命令行。

四、核心代码编写

1. 项目目录结构

在elder-care-archive文件夹下手动创建以下子文件夹和文件:

2. db.js数据库连接

完整内容直接复制:

```javascript const mysql = require('mysql2/promise'); const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'elder12345', // 替换为你自己的MySQL root密码 database: 'elder_care_archive', waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); module.exports = pool; ```

3. app.js核心服务

完整内容直接复制:

```javascript const express = require('express'); const pool = require('./db'); const path = require('path'); const app = express(); // 配置中间件 app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); app.use(express.static(path.join(__dirname, 'public'))); app.use(express.urlencoded({ extended: true })); // 档案列表页路由 app.get('/', async (req, res) => { const [elders] = await pool.query('SELECT FROM elder ORDER BY entry_date DESC'); res.render('index', { elders }); }); // 新增档案页路由 app.get('/add', (req, res) => { res.render('add'); }); // 新增档案提交路由 app.post('/add', async (req, res) => { const { name, gender, birth, id_card, phone, room, guardian_name, guardian_phone, entry_date } = req.body; await pool.query('INSERT INTO elder (name, gender, birth, id_card, phone, room, guardian_name, guardian_phone, entry_date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', [name, gender, birth, id_card, phone, room, guardian_name, guardian_phone, entry_date]); res.redirect('/'); }); // 编辑档案页路由 app.get('/edit/:id', async (req, res) => { const [elders] = await pool.query('SELECT FROM elder WHERE id = ?', [req.params.id]); res.render('edit', { elder: elders[0] }); }); // 编辑档案提交路由 app.post('/edit/:id', async (req, res) => { const { name, gender, birth, id_card, phone, room, guardian_name, guardian_phone, entry_date } = req.body; await pool.query('UPDATE elder SET name=?, gender=?, birth=?, id_card=?, phone=?, room=?, guardian_name=?, guardian_phone=?, entry_date=? WHERE id=?', [name, gender, birth, id_card, phone, room, guardian_name, guardian_phone, entry_date, req.params.id]); res.redirect('/'); }); // 删除档案路由 app.get('/delete/:id', async (req, res) => { await pool.query('DELETE FROM elder WHERE id = ?', [req.params.id]); res.redirect('/'); }); // 启动服务 app.listen(3000, () => { console.log('系统已启动,访问地址:http://localhost:3000'); }); ```

4. EJS模板文件

layout.ejs完整内容:

```html <%= title || '养老院档案管理系统' %> <%- body %> ```

index.ejs完整内容:

```html <%- include('layout', {title: '档案列表'}) %>

养老院老人档案列表

新增档案 <% elders.forEach(elder => { %> <% }) %>
姓名 性别 出生年月 身份证号 联系电话 房间号 入住日期 操作
<%= elder.name %> <%= elder.gender %> <%= elder.birth.toISOString().split('T')[0] %> <%= elder.id_card %> <%= elder.phone %> <%= elder.room %> <%= elder.entry_date.toISOString().split('T')[0] %> 编辑 删除
```

add.ejs完整内容:

```html <%- include('layout', {title: '新增档案'}) %>

新增老人档案

返回
```

edit.ejs完整内容:

```html <%- include('layout', {title: '编辑档案'}) %>

编辑老人档案

返回
```

五、系统启动与使用

在VS Code内置终端输入nodemon app.js,看到「系统已启动,访问地址:http://localhost:3000」即为成功。

打开浏览器访问该地址,即可进行档案的新增、编辑、删除、查看操作。

档案整理收费标准按整理时间,到底怎么算才不吃亏?
档案整理收费标准按整理时间,到底怎么算才不吃亏?
你是不是也遇到过这种情况?家里堆了几十年的老文件、公司里积压成山的旧资料,想找个专业的人来整理,结果一问价格,有的说按小时收费,有的说按天算,还有的给你报个总价但说不清怎么算出来的。最后钱花出去了,效...
2026年09月16日 02:25:20
档案管理系统邮件认证,这玩意儿到底怎么搞?
档案管理系统邮件认证,这玩意儿到底怎么搞?
这事儿吧,我见过太多人踩坑了。一提到档案系统,很多人脑子里就是一堆表格、编号,冷冰冰的。但说到“邮件认证”,嘿,不少人就开始挠头了,这不就是收个验证码吗?还真不是你想的那么简单。
2026年09月16日 02:25:20
档案制度建设服务质量不高解决方案有哪些?
档案制度建设服务质量不高解决方案有哪些?
解决档案制度建设服务质量不高问题,可通过标准化建设、人员赋能、动态监督三个维度落地科学的档案制度建设服务质量不高解决方案,能够有效提升档案管理服务的合规性与实用性。接下来本文将从实操角度,详细拆解具体...
2026年09月16日 02:25:20
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818