繁体   English   中英

MongoDB-mongoose不响应REST API

[英]MongoDB-mongoose does not respond to REST API

我在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得到任何日志

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

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

邮递员被困在“加载中”,直到收到超时:无法获得任何响应。 对Mongo DB Shell中的任务集合执行的所有简单操作都没有问题。 猫鼬会怎样? 提前致谢。

尝试使用以下代码创建一个单独的文件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");
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM