1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| const uri = "mongodb+srv://<username>:<password>.@<endpoint>/?retryWrites=true&w=majority&appName=Azure-Cluster-HongKong";
const client = new MongoClient(uri);
let db; let isConnected = false;
app.get("/", (req, res) => { res.json({ message: "API 服务器正在运行" }); });
async function connectToDatabase() { try { await client.connect(); db = client.db("kyle_blog_secret"); isConnected = true; console.log("成功连接到 MongoDB"); } catch (error) { console.error("MongoDB 连接失败:", error); throw error; } }
app.use(async (req, res, next) => { if (!isConnected) { try { await connectToDatabase(); } catch (error) { return res.status(500).json({ message: "数据库连接失败", error: error.message }); } } next(); });
app.get("/query", async (req, res) => { try { if (!db) { throw new Error("数据库连接未就绪"); } const { item } = req.query; const filter = item ? { item } : {};
const result = await db.collection("kyle").find(filter).toArray(); res.json(result); } catch (error) { console.error("查询失败:", error); res.status(500).json({ message: "查询失败", error: error.message }); } });
app.get("/health", (req, res) => { res.json({ status: "ok" }); });
app.use((err, req, res, next) => { console.error(err.stack); res.status(500).json({ message: "服务器内部错误", error: err.message }); });
if (process.env.NODE_ENV !== 'production') { app.listen(port, () => { console.log(`服务器运行在端口 ${port}`); }); }
module.exports = app;
|