连接到 MongoDB 但 Express .get 返回 404 错误?

Posted

技术标签:

【中文标题】连接到 MongoDB 但 Express .get 返回 404 错误?【英文标题】:Connected to MongoDB but Express .get returns 404 error? 【发布时间】:2016-06-02 03:28:54 【问题描述】:

我有一个在 Express v4 上使用 MongoDB + Mongoose 的应用程序。我相信我已经成功连接了我的数据库,但是当我在 Postman 上测试连接时,我的 GET 请求返回了 404 错误。

有人能在我的代码中发现错误吗?

服务器.js

...
var mongo = require('mongodb');                      
var mongoose = require('mongoose');                
require('./models/Thread');
require('./routes/thread');

mongoose.connect('mongodb://localhost:27017/pudo');   

var app = express();  
var router = express.Router();
...

/models/Thread.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var ThreadSchema = new mongoose.Schema(
    name: String
);
var Thread = mongoose.model('Thread', ThreadSchema);
module.exports = Thread;

/routes/thread.js

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');

var Thread = mongoose.model('Thread');

router.get('/threads', function(req, res, next)
    Thread.find(function(err, threads)
        if(err)return next(err);
        res.json(threads);
    );
);
module.exports = router;

我相信这是我的代码之间的最小连接,以便它工作。但是,向 /threads 发送 GET 会返回 404 错误,而不是任何数据库记录。

【问题讨论】:

如果mongodb连接正常,请检查您代码中使用的url... 你指的是这个网址mongoose.connect('mongodb://localhost:27017/pudo'); 吗?没错 不,网址get /threads,请查看app.listen()中的ip地址和端口列表... 【参考方案1】:

我找到了解决方案!而不是:

require('./routes/thread');

使用这个:

router.use(require('./routes/thread'));

【讨论】:

以上是关于连接到 MongoDB 但 Express .get 返回 404 错误?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Mongoose 连接到 MongoDB Atlas

在 express.js 中连接到 Mongodb-Native-Driver

让 Mongo 连接到 Express 应用程序

MongoDB 连接到 AWS 上的节点 平均堆栈

mongoose.connect 在连接到 mongodb 后不调用回调

使用新的节点快速服务器连接到现有 MongoDB