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 我确定我的应用程序已正确连接到我的数据库,我的集群指标也表明我的读取操作,所以我猜它以正确的方式连接 惊讶!相同的代码对我有用.. 哇什么?你能发布你的代码吗? 当然,这里是Github
github.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