返回
让体重管理轻松一刻,定制化体重记录应用(二)
前端
2023-09-23 19:36:00
前言
在上一篇文章中,我们已经完成了应用的基础框架搭建。本文将继续完善应用的功能,重点介绍体重记录页面的开发。我们将使用Node.js + TypeScript作为后端框架,并使用云数据库作为数据存储。
体重记录页面的开发
初始化后端Node+TypeScript项目
首先,我们需要初始化我们的后端Node+TypeScript项目。我们可以使用以下命令来完成:
npx create-react-app my-weight-tracker-backend --template @typescript
这将创建一个新的Node+TypeScript项目。接下来,我们需要安装必要的依赖项:
npm install express body-parser cors mysql
这些依赖项将帮助我们构建我们的后端API。
数据库设计
接下来,我们需要设计我们的数据库。我们将使用MySQL作为我们的数据库。我们的数据库将包含一个名为weights
的表,该表将存储用户的体重记录。weights
表的结构如下:
CREATE TABLE weights (
id INT NOT NULL AUTO_INCREMENT,
user_id INT NOT NULL,
weight FLOAT NOT NULL,
date DATETIME NOT NULL,
PRIMARY KEY (id)
);
接口设计
接下来,我们需要设计我们的API接口。我们将使用Express作为我们的API框架。我们的API将包含以下接口:
- GET /weights:获取所有用户的体重记录
- POST /weights:添加新的体重记录
- PUT /weights/:id:更新现有体重记录
- DELETE /weights/:id:删除现有体重记录
云数据库初始化
接下来,我们需要初始化我们的云数据库。我们可以使用以下命令来完成:
mysql -u root -p
这将打开MySQL命令行界面。接下来,我们需要创建我们的数据库:
CREATE DATABASE my_weight_tracker;
接下来,我们需要授予用户对数据库的访问权限:
GRANT ALL PRIVILEGES ON my_weight_tracker.* TO 'username'@'localhost' IDENTIFIED BY 'password';
数据库操作方法封装
最后,我们需要封装我们的数据库操作方法。我们可以创建一个名为db.js
的文件,并在其中封装我们的数据库操作方法。我们的db.js
文件如下:
const mysql = require('mysql');
const pool = mysql.createPool({
host: 'localhost',
user: 'username',
password: 'password',
database: 'my_weight_tracker'
});
exports.getAllWeights = () => {
return new Promise((resolve, reject) => {
pool.query('SELECT * FROM weights', (err, results) => {
if (err) {
reject(err);
} else {
resolve(results);
}
});
});
};
exports.addWeight = (weight) => {
return new Promise((resolve, reject) => {
pool.query('INSERT INTO weights (user_id, weight, date) VALUES (?, ?, ?)', [weight.user_id, weight.weight, weight.date], (err, results) => {
if (err) {
reject(err);
} else {
resolve(results);
}
});
});
};
exports.updateWeight = (weight) => {
return new Promise((resolve, reject) => {
pool.query('UPDATE weights SET weight = ?, date = ? WHERE id = ?', [weight.weight, weight.date, weight.id], (err, results) => {
if (err) {
reject(err);
} else {
resolve(results);
}
});
});
};
exports.deleteWeight = (id) => {
return new Promise((resolve, reject) => {
pool.query('DELETE FROM weights WHERE id = ?', [id], (err, results) => {
if (err) {
reject(err);
} else {
resolve(results);
}
});
});
};
结语
至此,我们就完成了体重记录页面的开发。在下一篇文章中,我们将继续完善应用的功能,并介绍如何使用该应用。