NodeJS Express Mongoose 返回空 []

Posted

技术标签:

【中文标题】NodeJS Express Mongoose 返回空 []【英文标题】:NodeJS Express Mongoose return empty [] 【发布时间】: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 希望这会起作用

【问题讨论】:

example of my document 我确定我的应用程序已正确连接到我的数据库,我的集群指标也表明我的读取操作,所以我猜它以正确的方式连接 惊讶!相同的代码对我有用.. 哇什么?你能发布你的代码吗? 当然,这里是Githubgithub.com/kedarSedai/code-of-Clumpsypenguin的链接 【参考方案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) 前面添加了那个空对象,但这似乎不能解决问题

以上是关于NodeJS Express Mongoose 返回空 []的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Express 和 NodeJS 中针对 Mongoose 错误进行错误处理。

Nodejs+express+mongodb+mongoose

使用 Nodejs、Express、Mongoose 和 React 将图像上传到 MongoDB

如何在 mongodb 中自动插入记录(nodejs、express、mongoose)

如何在 NodeJS 的查询参数中传递时间戳(Express + Mongoose)

NodeJS/Express/Mongoose 出错 Can't set headers after they are sent