【问题标题】:NodeJS Express Mongoose return empty []NodeJS Express Mongoose 返回空 []
【发布时间】:2020-09-16 08:08:45
【问题描述】:

我尝试制作 MEAN 堆栈应用,但我的 API 未能提供我请求的数据。

server.js 文件:

const express = require("express");
const bodyparser = require("body-parser");
const mongoose = require('mongoose');
const dotenv = require('dotenv');
dotenv.config();
const port = process.env.PORT; 
const dburi = process.env.DB_URI; 

//Routes
const volcanoesRoute = require('./api/routes/volcano.routes');

mongoose.Promise = global.Promise;

mongoose.connect(
  dburi,
  {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useFindAndModify: false,
    useCreateIndex: true,
  },
).then(
  () => {
    console.log('Connected to mongoDB');
  },
  (err) => console.log('Error connecting to mongoDB', err),
  { useNewUrlParser: true }
);


//Express app
const app = express();

app.use(bodyparser.json());
app.use(bodyparser.urlencoded({ extended: false }));
app.use('/api/vulcanoes', volcanoesRoute);
app.listen(port, () => {
  console.log(`running at port ${port}`);
});

路线文件:

const express = require('express');
const volcanoController = require('../controllers/volcanoController');
const router = express.Router();

router.get('/getallvulcanoes', volcanoController.getAllVolcanoes);

module.exports = router;

控制器文件:

const VolcanoSchema = require('../models/volcano.models');

const getAllVulcanoes = (req, res) => {
    VolcanoSchema.find((err, results) => {
      if (err) {
        console.log(err);
        res.status(500).json({message: err});
      } else {
        res.status(200).json(results);
      }
    });
  };

  module.exports = {getAllVolcanoes};

模型文件

const mongoose = require('mongoose');

const VolcanoSchema = new mongoose.Schema({
    Volcano_name:{
        type: String,
    },
    Country:{
        type: String,
    },
    Type:{
        type: String,
    },
    Latitude:{
        type: Number,
    },
    Longtitude:{
        type: Number,
    },
    Elevation:{
        type: Number,
    },
});

module.exports = mongoose.model('Volcano', VolcanoSchema);

问题是我有一个工作示例,但大部分代码都已失效......但响应总是给我这个

如果有人指出我做错了什么会很好

编辑:我为我的数据库切换到 postgresql 希望这会起作用

【问题讨论】:

  • 我确定我的应用程序已正确连接到我的数据库,我的集群指标也表明我的读取操作,所以我猜它以正确的方式连接
  • 惊讶!相同的代码对我有用..
  • 哇什么?你能发布你的代码吗?
  • 当然,这里是Githubgithub.com/kedarSedai/code-of-Clumpsypenguin的链接

标签: node.js mongodb express mongoose mean


【解决方案1】:

你应该修复控制器(VulcanoSchema.find 需要一个空对象作为参数):

控制器文件:

const VulcanoSchema = require('../models/vulcano.models');

const getAllVulcanoes = (req, res) => {
  VulcanoSchema.find({}, (err, results) => {
    if (err) {
      console.log(err);
      res.status(500).json({message: err});
    } else {
      res.status(200).json(results);
    }
  });
};

module.exports = {getAllVulcanoes};

【讨论】:

  • 第一个参数应该是 Object/ObjectId。第二个,回调函数。
  • 你说得对,我也这么认为,但我只是尝试过,他的方法似乎效果很好,所以我认为这不是他的问题
  • find(callback?: (err: any, res: T[]) => void) 有一个重载
  • 嗨,我在 (err,results) 前面添加了那个空对象,但这似乎不能解决问题
猜你喜欢
  • 2019-11-30
  • 2022-06-10
  • 2019-05-08
  • 2016-06-28
  • 2012-12-20
相关资源
最近更新 更多