自学内容网 自学内容网

在 expressjs 中MySQL 的datetime类型,怎么插入数据

在Express.js中,当你需要与MySQL数据库交互并插入DATETIME类型的数据时,你通常会使用某种Node.js的MySQL客户端库,如mysqlmysql2mysql2/promise(后者提供了Promise API的支持,使得你可以使用async/await)。

以下是一个使用mysql2/promise库在Express.js中插入DATETIME类型数据的示例:

首先,确保你已经安装了mysql2

npm install mysql2

然后,在你的Express路由处理函数中,你可以这样做:

const express = require('express');
const mysql = require('mysql2/promise');

const app = express();
const PORT = 3000;

// 假设你已经有了数据库连接配置
const connection = await mysql.createConnection({
  host: 'localhost',
  user: 'yourUsername',
  database: 'yourDatabase',
  password: 'yourPassword'
});

// 注意:在实际应用中,你不应该在全局范围内创建连接,
// 而应该在需要的地方(如路由处理函数中)创建和销毁连接,
// 或者使用连接池来管理连接。

app.post('/add-datetime', async (req, res) => {
  try {
    // 假设你从请求体中获取了需要插入的日期时间(这里只是示例)
    // 在实际应用中,你可能需要验证和清理这些数据
    const { datetimeString } = req.body; // 假设客户端发送了一个名为datetimeString的字段

    // 但是,为了演示,我们直接使用JavaScript的Date对象和toISOString()方法来生成一个格式化的字符串
    // 注意:MySQL的DATETIME类型通常不需要时区信息,所以我们可以使用slice()来去掉toISOString()返回的字符串中的时区部分
    const datetime = new Date().toISOString().slice(0, 19).replace('T', ' '); // 转换为YYYY-MM-DD HH:MM:SS格式

    // 或者,如果你已经有了符合格式的字符串或来自客户端的验证过的数据,你可以直接使用它
    // const datetime = datetimeString; // 确保datetimeString是'YYYY-MM-DD HH:MM:SS'格式的

    // 构造SQL语句并执行插入操作
    // 注意:为了防止SQL注入,你应该使用参数化查询(这里已经通过?实现了)
    const [rows, fields] = await connection.execute(
      'INSERT INTO your_table_name (datetime_column) VALUES (?)',
      [datetime]
    );

    // 响应客户端
    res.json({ message: 'Datetime inserted successfully', affectedRows: rows.affectedRows });
  } catch (error) {
    // 处理错误
    console.error('Error inserting datetime:', error);
    res.status(500).json({ message: 'Error inserting datetime' });
  }
});

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

// 注意:上面的代码示例为了简洁而省略了一些重要的细节,
// 比如错误处理和连接管理(在生产环境中,你应该使用连接池来管理数据库连接)。

然而,请注意,上面的代码中我使用了new Date().toISOString().slice(0, 19).replace('T', ' ')来生成一个符合MySQL DATETIME格式的字符串,这实际上是不必要的,因为mysql2/promise库会自动将JavaScript的Date对象转换为MySQL可接受的格式。因此,你可以直接将Date对象作为参数传递给execute方法,如下所示:

const datetime = new Date(); // 创建一个Date对象
// ...
await connection.execute(
  'INSERT INTO your_table_name (datetime_column) VALUES (?)',
  [datetime] // 直接传递Date对象
);

这样,mysql2/promise库就会负责将Date对象转换为DATETIME类型的字符串,并将其插入到数据库中。


原文地址:https://blog.csdn.net/xuelian3015/article/details/142420701

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!