小明:嘿,小李!最近公司要上线一个新的就业系统,需要我负责后端部分。你有什么建议吗?
小李:当然有啦!首先得明确需求,比如用户管理、职位发布、简历投递等功能。
小明:明白了,那我们先从数据库开始吧。你觉得应该有哪些核心表呢?
小李:至少要有用户表、职位表和简历表。像这样:
-- 用户表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 职位表
CREATE TABLE jobs (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
description TEXT,
company_name VARCHAR(100),
location VARCHAR(100),
salary DECIMAL(10, 2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 简历表
CREATE TABLE resumes (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
experience TEXT,
education TEXT,
skills JSON,
FOREIGN KEY (user_id) REFERENCES users(id)
);
小明:好的,接下来是API的设计。你觉得哪些接口是必须的?
小李:最基本的包括用户注册、登录、职位查询、简历提交等。
小明:明白了,我可以写一些简单的Node.js代码来处理这些请求。例如用户注册功能:
const express = require('express');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const app = express();
app.use(bodyParser.json());
// 创建数据库连接池
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'password',
database: 'job_system'
});
// 用户注册接口
app.post('/register', (req, res) => {
const { username, password, email } = req.body;
if (!username || !password) {
return res.status(400).send({ error: 'Username and password are required.' });
}
pool.query(
'INSERT INTO users (username, password, email) VALUES (?, ?, ?)',
[username, password, email],
(error, results) => {
if (error) {
return res.status(500).send({ error: 'Database error.' });
}
res.send({ message: 'User registered successfully!' });
}
);
});
app.listen(3000, () => console.log('Server running on port 3000'));
小李:不错!不过记得对密码进行加密存储,比如使用bcrypt库。
小明:好的,我会加上这个功能。另外,为了提升性能,我们还可以引入缓存机制,比如Redis。
小李:没错,对于频繁访问的数据可以放到缓存里,减少数据库压力。
小明:谢谢你,我现在对整个项目的规划清晰多了!
小李:不客气,有问题随时找我。
]]>