Expressjs 服务器访问

问题描述 投票:0回答:1

此代码旨在连接我的快递服务器并获取一些数据。当我使用 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);
  });
  })

请帮忙。

reactjs node.js mongodb express
1个回答
0
投票

您好,我对您的代码进行了一些调整,以帮助实现所需的功能并提高其稳健性:

  1. 异步数据库连接:connectToDatabase 函数现在使用 async/await 语法,以更干净、更直接的方式处理与 MongoDB 的异步连接。这种方法确保服务器只有在成功连接到数据库后才开始监听。

  2. 中间件:包含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 替换为您的实际连接字符串和数据库名称。此代码旨在解决您的问题并提高服务器的可靠性。如果您有任何疑问或其他问题,请告诉我!

© www.soinside.com 2019 - 2024. All rights reserved.