首页 > 数据库 >nextjs14连接MySQL

nextjs14连接MySQL

时间:2024-01-11 11:35:35浏览次数:35  
标签:await const nextjs14 MYSQL id MySQL query message 连接

 

第一步

npm install mysql2

第二步新建一个db.js

 db.js

import mysql from "mysql2/promise";

export async function query({ query, values = [] }) {

  const dbconnection = await mysql.createPool({
    host: process.env.MYSQL_HOST,
    post: process.env.MYSQL_PORT,
    database: process.env.MYSQL_DATABASE,
    user: process.env.MYSQL_USER,
    password: process.env.MYSQL_PASSWORD,
  });

  try {
    const [results] = await dbconnection.execute(query, values);
    dbconnection.end();
    return results;
  } catch (error) {
    throw Error(error.message);
  }
}

第三步,配置数据库连接

 

/** @type {import('next').NextConfig} */
const nextConfig = {
    // reactStrictMode: true,  
    // transpilePackages: ['antd','@ant-design/icons']  
    env:{
        'MYSQL_HOST':'你的地址',
        'MYSQL_PORT':'3306',
        'MYSQL_DATABASE':'lg',
        'MYSQL_USER':'root',
        'MYSQL_PASSWORD':'root'
    }
}

module.exports = nextConfig

第四步,在数据库中创建表

// CREATE TABLE users( //   id Int AUTO_INCREMENT PRIMARY KEY, //  name VARCHAR(255)   NULL, //  password VARCHAR(255)  NULL, //  email VARCHAR(255)  NULL, //  type ENUM('admin','user','guest') NOT null, //  create_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON //   UPDATE CURRENT_TIMESTAMP // );   第五步,创建api路由

import { query } from "@/lib/db";

export async function GET(request) {
    const users = await query({
        query: "SELECT * FROM users",
        values: [],
    });

    let data = JSON.stringify(users);
    return new Response(data, {
        status: 200,
    });
}

export async function POST(request) {

    try {
        const { email } = await request.json();
        const updateUsers = await query({
            query: "INSERT INTO users (email) VALUES (?)",
            values: [email],
        });
        const result = updateUsers.affectedRows;
        let message = "";
        if (result) {
            message = "success";
        } else {
            message = "error";
        }
        const user = {
          email: email,
        };
        return new Response(JSON.stringify({
            message: message,
            status: 200,
            product: user
        }));
    } catch (error) {
        return new Response(JSON.stringify({
            status: 500,
            data: request
        }));
    }
}

export async function PUT(request) {

    try {
        const { id, visitor_name } = await request.json();
        const updateProducts = await query({
            query: "UPDATE users SET visitor_name = ? WHERE id = ?",
            values: [visitor_name, id],
        });
        const result = updateProducts.affectedRows;
        let message = "";
        if (result) {
            message = "success";
        } else {
            message = "error";
        }
        const product = {
            id: id,
            visitor_name: visitor_name,
        };
        return new Response(JSON.stringify({
            message: message,
            status: 200,
            product: product
        }));
    } catch (error) {
        return new Response(JSON.stringify({
            status: 500,
            data: res
        }));
    }

}


export async function DELETE(request) {

    try {
        const { id } = await request.json();
        const deleteUser = await query({
            query: "DELETE FROM users WHERE id = ?",
            values: [id],
        });
        const result = deleteUser.affectedRows;
        let message = "";
        if (result) {
            message = "success";
        } else {
            message = "error";
        }
        const product = {
            id: id,
        };
        return new Response(JSON.stringify({
            message: message,
            status: 200,
            product: product
        }));
    } catch (error) {
        return new Response(JSON.stringify({
            status: 500,
            data: res
        }));
    }

}

第六步,发送post,添加数据

 第7步,查看

 

 

 

标签:await,const,nextjs14,MYSQL,id,MySQL,query,message,连接
From: https://www.cnblogs.com/hechunfeng/p/17958183

相关文章

  • mysql的for update
    Forupdate是MySQL中用于实现行锁的一种语法,其主要作用是在SELECT查询语句中加上FORUPDATE子句,以保证查询结果集中的每一行都被锁定,避免其他事务对这些行进行修改。SELECT...FROMtable_nameWHERE...FORUPDATE;在执行Forupdate语句时,MySQL会首先获取表级共享锁,然后再根......
  • Go+Gin+xorm+MySql实现增删改查
    一、概述承接上一篇(ps:原生增删改查),本篇使用xorm实现增删改查。之所以要使用xrom是因为xrom可以极大的缩小操作数据库的成本。使用rom之前需要导入响应的包gogetgithub.com/go-xorm/xorm#安装xormgogetxorm.io/coregoget-ugithub.com/go-sql-driver/mys......
  • [转帖]修改Linux内核参数,减少TCP连接中的TIME-WAIT
    https://www.cnblogs.com/xiaoleiel/p/8340346.html 一台服务器CPU和内存资源额定有限的情况下,如何提高服务器的性能是作为系统运维的重要工作。要提高Linux系统下的负载能力,当网站发展起来之后,web连接数过多的问题就会日益明显。在节省成本的情况下,可以考虑修改Linux的内......
  • mysql修改json字段sql备份
    updatedec_maina,dec_main_copy20240110bseta.ie_Date=b.ie_Date,a.declaration_data=b.declaration_data,a.custom_state=b.custom_state,a.content=JSON_SET(a.cont......
  • mysql实现数据文件存储到指定分区
    通过rpm安装的mysql默认程序文件放在/usr/bin,数据文件放在/var/lib/mysql,需要将数据文件放在不同分区,保证数据量时将根目录撑爆一、关闭数据库[root@node1bin]#systemctlstopmysqld[root@node1bin]#systemctlstatusmysqld●mysqld.service-MySQLServerLoaded:lo......
  • MySQL InnoDB ReplicaSet安装文档
    MySQL副本集介绍MySQLInnoDBReplicaSet(也叫MySQL副本集,有些地方也翻译成MySQL复制集)是在MySQL8.0.19版本(2020-01-13Released)之后开始支持的,MySQL副本集中拥有一个primary节点,一个或多个secondary节点,它不像MySQLInnoDBCluster一样提供故障自愈和多主模式,但是它提供手......
  • MySQL Ignoring the redo log due to missing MLOG_CHECKPOINT between the checkpoin
    错误信息:2023-12-12T09:32:31.383149Z0[ERROR]InnoDB:IgnoringtheredologduetomissingMLOG_CHECKPOINTbetweenthecheckpoint5777611209andtheend5777612857.2023-12-12T09:32:31.384149Z0[ERROR]InnoDB:PlugininitializationabortedwitherrorGeneri......
  • VsCode无法连接虚拟机Ubuntu
    VsCodeSSH连接UbuntuServer1.下载官方插件Remote-SSH2.虚拟机查看ip地址ipaddr3.配置config文件连接失败过程试图写入的管道不存在。解决重启ubuntureboot修改设置,将网络连接方式NAT➡桥接网卡结果......
  • 详解GaussDB(DWS)通信安全的小妙招:连接认证机制
    本文分享自华为云社区《GaussDB(DWS)数据库安全系列之通信安全》,作者:yd_262982826。1.前言网络是一个开放的环境,仅仅依靠用户名和密码难以应对复杂的网络环境,针对可能存在的身份伪造的欺骗行为,以及监听通信内容的窃听行为,为了确保通信双方身份的真实性和通信内容的私密性,防止非法......
  • 揭秘MySQL中的"黑洞":为什么你应避免默认使用NULL值?
    摘要:在MySQL中,NULL值是一种特殊的标记,表示数据缺失或未知。然而,默认使用NULL值可能会引发一系列问题。本文将深入探讨为什么不建议默认使用NULL值,并通过具体示例揭示其潜在风险。一、什么是NULL值?在MySQL中,NULL表示一个字段没有值或数据未知。不同于空字符串("")或0,NULL表示缺失或......