【问题标题】:MongoDB-mongoose does not respond to REST APIMongoDB-mongoose 不响应 REST API
【发布时间】:2017-12-29 09:33:56
【问题描述】:

我对 MongoDB-mongoose 有一个奇怪的问题,它不响应 REST API 猫鼬版本 - 4.11.3 Mongo DB shell 版本 3.4.6 一切都在我的计算机上本地

与 Mongo DB 的连接如下:

server.js

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  console.log("Connected correctly to db");
});
...
var app = express();
var tasks = require('./server/routes/taskRouter');
app.use('/api/tasks',tasks);

打印“正确连接到数据库”的日志。

架构(tasks.js)

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var taskSchema = new Schema({
    name: String
});
var Task = mongoose.model('Task', taskSchema);
module.exports = Task;

最后是 taskRouter.js

var express = require('express');
var bodyParser = require('body-parser');
var Task = require('../models/tasks');
var taskRouter = express.Router();
taskRouter.use(bodyParser.json());

taskRouter.route('/')
.get(function (req, res, next) {
Task.find({}, function (err, task) {
        console.log("result"+task)
        if (err) throw err;
        res.json(task);
    });
})

.post(function (req, res, next) {
    var task = new Tasks();
    console.log ('the name is '+req.body.name);
    task.name = req.body.name;
    task.save(function(err){
      console.log ("arrived there");
      if (err)
        res.send(err);
      res.json({message: "Task created"});
    });
})

如您所见,一切都在书本上。 但我从来没有从 task.save 和 Task.find 得到任何日志

我的“摩根”记录器仅显示以下日志:

GET /api/tasks - - ms - -
POST /api/tasks - - ms - -

邮递员卡在“正在加载”,直到收到超时:无法得到任何响应。 在 Mongo DB shell 中对任务集合的所有简单操作都可以毫无问题地执行。 猫鼬会发生什么? 提前致谢。

【问题讨论】:

    标签: node.js mongodb rest mongoose


    【解决方案1】:

    尝试使用以下代码创建一个单独的文件 config.js :

    module.exports = {
        'database': 'mongodb://localhost:27017/yourdatabasename'
    }
    

    server.js:

    ...
    var config = require('./config'); // get our config file
    ...
            var mongoose = require('mongoose');
            ...
             mongoose.connect(config.database, { useMongoClient: true }); 
        mongoose.connection.on('open', function(err, doc){
            console.log("connection established");
            var app = express();
            var tasks = require('./server/routes/taskRouter');
            app.use('/api/tasks',tasks);
    
            db.on('error', console.error.bind(console, 'connection error:'));
            db.once('open', function() {
              console.log("Connected correctly to db");
            });
    

    【讨论】:

    • 谢谢,但添加配置没有帮助。当将连接到数据库(mongoose.connect ...)从 server.js 文件移动到 taskRouter.js 时,我发现了一个漫游。如果我要在一条路线上工作,那很好,但是任何人都可以弄清楚连接到数据库并在不同文件中对其执行操作的问题是什么?
    猜你喜欢
    • 2016-09-23
    • 2020-06-25
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 2019-02-04
    • 1970-01-01
    相关资源
    最近更新 更多