拖到最後要來還債了qq 來寫連接資料庫的部分
Step1: 建立 server 資料夾
這裡是用 postgres
mkdir server
cd server
npm init -y
npm install express cors pg
Step2: 設定連線資料
import express from 'express'
import cors from 'cors'
import pkg from 'pg'
const { Pool } = pkg
const app = express()
app.use(cors())
app.use(express.json())
const pool = new Pool({
user: '你的user',
password: '你的password',
host: '你的host',
port: 你的port,
database: '你的dbname'
})
app.get('/api/test', async (req, res) => {
try {
const result = await pool.query('SELECT NOW()')
res.json({ success: true, time: result.rows[0] })
} catch (err) {
console.error(err)
res.status(500).json({ success: false, message: '資料庫連線失敗' })
}
})
const PORT = 3000
app.listen(PORT, () => console.log(`🚀 Server running on port ${PORT}`))
但這邊暫時沒連成功,好像少了一個變數,拿到之後再試試看qaq
Step3: 從資料庫中撈資料
app.get('/api/posts', async (req, res) => {
try {
const result = await pool.query('SELECT * FROM posts ORDER BY id DESC')
res.json(result.rows)
} catch (err) {
res.status(500).json({ message: err.message })
}
})
Step4: 呼叫 API
import { ref, onMounted } from 'vue'
import axios from 'axios'
export function usePosts() {
const posts = ref([])
const loading = ref(false)
const error = ref(null)
async function fetchPosts() {
loading.value = true
try {
const res = await axios.get('http://localhost:3000/api/posts')
posts.value = res.data
} catch (err) {
error.value = err.message
} finally {
loading.value = false
}
}
onMounted(fetchPosts)
return { posts, loading, error, fetchPosts }
}
最後最後連線資訊要放到 .env 中,避免被看光光