首页 > 解决方案 > 为什么我无法从 mongodb 数据库中获取数据?

问题描述

它根本没有显示错误。甚至 cosole 显示数据库已连接。但它没有显示数据。当我去 http://localhost:5000/tasks 它显示

无法获取 /tasks

我在这里想念什么?

const express = require('express')
const bodyParser = require('body-parser');
const cors = require('cors');
const MongoClient = require('mongodb').MongoClient;
require('dotenv').config()

const uri = `mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASS}@cluster0.vwtzw.mongodb.net/${process.env.DB_NAME}?retryWrites=true&w=majority`;

const app = express()

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors());

const port =5000;

app.get('/', (req, res) => {
   res.send('hello world!');
 });

const client = new MongoClient(uri, { useNewUrlParser: true , useUnifiedTopology: true });

    client.connect(err => {
    const tasksCollection = client.db("VolunteerNetwork").collection("tasks");

    app.get('/tasks',(req, res) => {
        tasksCollection.find({})
        .toArray( ( err, documents) => {
          res.send(documents);
          console.log(documents);
          console.log('database connected');

        })
      })





});


app.listen(port);

在我运行它之后显示 -

mongo 数据库名称:VolunteerNetwork.tasks

标签: node.jsreactjsmongodbexpress

解决方案


the get route is inside the connect method - try reorganizing the code so that you open the connection when a request is made

 const MongoClient = require('mongodb').MongoClient;
 const uri = `mongodb://localhost:27017`;

 const client = new MongoClient(uri, { useNewUrlParser: true , useUnifiedTopology: true });
 router.get('/tasks',(req, res) => {
    client.connect(err => {
    const tasksCollection = client.db("VolunteerNetwork").collection("tasks");

    tasksCollection.find({})
    .toArray( ( err, documents) => {
       res.send(documents);
        console.log('database connected');
        console.log(documents);
       })
      })
});

推荐阅读