繁体   English   中英

从不解析从Node + Express API到MongoDB的HTTP请求

[英]Never resolving HTTP Requests from Node+Express API to MongoDB

我正在构建一个非常简单的API,以便在本地mongo数据库上执行基本的CRUD操作。 该代码对我来说看起来不错,但是以某种方式,CRUD操作将导致永无休止的未决请求。

这里的代码部分: spawn.model.js (与数据库集合相对应的模型)

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

var SpawnSchema = Schema({
    Name: {
        type: String,
        unique: false,
        required: true
    }
}, { timestamps: true });

module.exports = mongoose.model('spawns', SpawnSchema);

spawn.controller.js

var Spawn = require('../models/Spawn/spawn.model');

exports.getSpawns = function(req, res){
    Spawn.find({}, function(spawns){
        res.send(spawns);
    });
}

这里是spawn.routes.js文件:

var Spawns = require('../controllers/spawn.controller');

module.exports = function(app){
    app.get('/list', Spawns.getSpawns);
}

最后是server.js文件:

var express = require('express');
var bodyParser = require('body-parser');

var properties = require('./config/properties');
var db = require('./config/database');
var app = express();

//configure bodyparser
var bodyParserJSON = bodyParser.json();
var bodyParserURLEncoded = bodyParser.urlencoded({ extended: true });

// call the database connectivity function
db();

// configure app.use()
app.use(bodyParserJSON);
app.use(bodyParserURLEncoded);

// Routes
app.get('/', function(req, res){
    res.json({ message: 'Spawns API' });
});

require('./app/routes/spawn.routes')(app);

// intialise server
app.listen(properties.PORT, () => {
    console.log(`Server is running on ${properties.PORT} port.`);
})

./config上的数据库文件如下:

var mongoose =  require('mongoose');
var dbURL = require('./properties').DB;

mongoose.Promise = global.Promise;

module.exports = function(){
    mongoose.connect(dbURL, { useNewUrlParser: true }, function(){
        console.log('Successfully connected to database');
    });
}

/ config上的properties.js只是一个具有数据库URL和快速服务器端口的对象。

当我尝试通过邮递员到URL的请求: http:// localhost:4000 / list时 ,请求被挂起,并且从未解决。 我想念什么?

PD:解决了! ===========

我需要在npm上更新猫鼬版本,因为它是3.x,并且需要是5.x,以便与新方法很好地配合使用。

一点点更新代码,像这样检查

spwanRoute.js

const express = require('express');
const router = express.Router();
const spawnCntr = require('./speanControllers');

router.get('/list', spawnCntr.getSpawns);

module.exports = router;

spwanUtils.js

const Spawns = require('../models/Spawn/spawn.dao');
const spawnUtils = {};

spawnUtils.getSpawns = (req, res) => {
    try {
        Spawns.get({}, (err, spawns) => {
            if(err){
                return res.status(400).json({ error: err });
            }
            return res.status(200).json({ spawns });
        });
    } catch (err) {
        console.log(err);
        return res.status(500).json({ error: 'INTERNAL_EROR' });
    }    
}

module.exports = spawnUtils;

暂无
暂无

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

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