此代码旨在连接我的快递服务器并获取一些数据。当我使用 Node Index.js 运行代码时,我期望控制台上出现提示,告诉我服务器处于活动状态,但我没有得到这一点,当我访问端口时,首先,我收到了 Cannot Get 提示我添加了 app.get,现在 8080 或浏览器的控制台中没有任何显示。
var Express = require("express");
var Mongoclient = require("mongodb").MongoClient;
var cors = require("cors");
const multer = require("multer");
var app=Express();
app.use(cors());
var CONNECTION_STRING="mongodb+srv://admin:[email protected]/? retryWrites=true&w=majority&appName=Cluster0";
var DATABASENAME="AdehyePoc";
var database;
app.listen(8080, ()=\>{
Mongoclient.connect(CONNECTION_STRING,(error, client)=\>{
database=client.db(DATABASENAME);
console.log("server is connected");
});
})
app.get('/Server/AdehyePoc/GetNotes',(request,response)=\>{
database.collection("Users").find({}).toArray((error, result)=\>{
response.send(result);
});
})
请帮忙。
您好,我对您的代码进行了一些调整,以帮助实现所需的功能并提高其稳健性:
异步数据库连接:connectToDatabase 函数现在使用 async/await 语法,以更干净、更直接的方式处理与 MongoDB 的异步连接。这种方法确保服务器只有在成功连接到数据库后才开始监听。
中间件:包含express.json()中间件来解析JSON请求体。如果您的服务器需要接受请求正文中的 JSON,则这是必要的,尽管它与原始问题没有直接关系。
这是修改后的代码片段:
const express = require('express');
const MongoClient = require('mongodb').MongoClient;
const cors = require('cors');
const app = express();
const port = 8080;
app.use(cors());
app.use(express.json());
const CONNECTION_STRING = "mongodb+srv://_username_:[email protected]/?retryWrites=true&w=majority&appName=Cluster0";
const DATABASE_NAME = "_databasename_";
async function connectToDatabase() {
try {
const client = await MongoClient.connect(CONNECTION_STRING, { useNewUrlParser: true, useUnifiedTopology: true });
console.log("Connected to the database successfully");
return client.db(DATABASE_NAME);
} catch (error) {
console.error("Could not connect to the database:", error);
process.exit(1);
}
}
async function startServer() {
const database = await connectToDatabase();
app.get('/Server/AdehyePoc/GetNotes', async (req, res) => {
try {
const notes = await database.collection("Users").find({}).toArray();
res.json(notes);
} catch (error) {
console.error("Error fetching data:", error);
res.status(500).send("Internal Server Error");
}
});
app.listen(port, () => {
console.log(`Server is listening on port ${port}`);
});
}
startServer();
我的package.json文件:
{
"name": "nodejs",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^16.4.5",
"express": "^4.19.2",
"mongodb": "^6.5.0",
"multer": "^1.4.5-lts.1"
}
}
确保将 your_connection_string_here 和 your_database_name_here 替换为您的实际连接字符串和数据库名称。此代码旨在解决您的问题并提高服务器的可靠性。如果您有任何疑问或其他问题,请告诉我!