Javascript 从不解析来自节点+;MongoDB的快速API

Javascript 从不解析来自节点+;MongoDB的快速API,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我正在构建一个非常简单的API,在本地mongo数据库上执行基本的CRUD操作。代码对我来说看起来很好,但不知何故,CRUD操作会导致一个永远不会结束的挂起请求 以下是代码的各个部分: spawn.model.js(与数据库集合相对应的模型) var mongoose=require('mongoose'); var Schema=mongoose.Schema; var SpawnSchema=Schema({ 姓名:{ 类型:字符串, 独特的:错误, 必填项:true } },{时间戳:tr

我正在构建一个非常简单的API,在本地mongo数据库上执行基本的CRUD操作。代码对我来说看起来很好,但不知何故,CRUD操作会导致一个永远不会结束的挂起请求

以下是代码的各个部分: spawn.model.js(与数据库集合相对应的模型)

var mongoose=require('mongoose');
var Schema=mongoose.Schema;
var SpawnSchema=Schema({
姓名:{
类型:字符串,
独特的:错误,
必填项:true
}
},{时间戳:true});
module.exports=mongoose.model('spawns',SpawnSchema);
spawn.controller.js

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

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

module.exports = router;
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;
var Spawn=require('../models/Spawn/Spawn.model');
exports.getSpawns=函数(req,res){
find({},函数(spawns){
res.send(繁殖);
});
}
这里是spawn.routes.js文件:

var Spawns=require('../controllers/spawn.controller');
module.exports=函数(应用程序){
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();
//配置bodyparser
var bodyParserJSON=bodyParser.json();
var bodyparserencoded=bodyParser.urlencoded({extended:true});
//调用数据库连接函数
db();
//配置app.use()
应用程序使用(bodyParserJSON);
应用程序使用(BodyParserEncoded);
//路线
app.get('/',函数(req,res){
res.json({message:'Spawns API'});
});
需要(“./app/routes/spawn.routes”)(app);
//初始化服务器
app.listen(properties.PORT,()=>{
log(`服务器正在${properties.PORT}端口上运行。`);
})
./config上的数据库文件如下所示:

var mongoose=require('mongoose');
var dbURL=require('./properties').DB;
mongoose.Promise=global.Promise;
module.exports=函数(){
connect(dbURL,{useNewUrlParser:true},function(){
log('成功连接到数据库');
});
}
而/config上的properties.js只是一个带有数据库URL和express服务器端口的对象

当我试图通过邮递员将请求发送到URL时:请求被挂起并且永远不会解析。我错过了什么

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


我需要在npm上更新mongoose版本,因为它是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;
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;
spwanUtils.js

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

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

module.exports = router;
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;

稍微更新一下代码,像这样,然后检查

spwanRoute.js

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

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

module.exports = router;
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;
spwanUtils.js

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

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

module.exports = router;
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;

这种类型的问题发生在服务器不返回任何响应时。我想是的,但我正在尝试了解为什么不返回任何响应,因为路由似乎很好,代码的其余部分也是如此。这种类型的问题发生在服务器不返回任何响应时。我想是的,但我正在尝试了解为什么不返回任何响应路由似乎很好,代码的其余部分也尝试了它,但它仍然挂起。捕获不会被触发,因为我没有收到任何500状态或“内部错误”消息。检查你的繁殖路线你是什么意思?上面已经复制了spawn路由器文件,我认为是正确的(或者至少看不出它有什么问题)。以下互联网上的多个例子看起来是一样的。。在主server.js文件中,我将express.Router()传递给spawn Router函数,然后简单地在itI上添加.get('/list')路由,我也尝试更改路由文件。顺便说一下,您提出的更改只是做同一件事的不同方式,而不考虑ES6,我认为我的路由文件是更好的实现,因为Express .Router()在主Server .js文件上声明,并传递到每个路由文件的相对函数。无论如何,任何建议都解决了这个问题,因为这些事情与非解析请求无关,我想如果这些事情中的任何一个是错误的,我会看到从控制台或其他地方输出的错误。@MarcHernández Put
app.all('/*',(req,res)=>{return res.status(404).json({error:'Requested URL not found'});
应用程序之后使用('/api',路由器)
并检查将要发生的事情,但它仍然保持挂起状态。捕获不会被触发,因为我没有收到任何500状态或“内部错误”消息。检查你的繁殖路线你是什么意思?上面已经复制了spawn路由器文件,我认为是正确的(或者至少看不出它有什么问题)。以下互联网上的多个例子看起来是一样的。。在主server.js文件中,我将express.Router()传递给spawn Router函数,然后简单地在itI上添加.get('/list')路由,我也尝试更改路由文件。顺便说一下,您提出的更改只是做同一件事的不同方式,而不考虑ES6,我认为我的路由文件是更好的实现,因为Express .Router()在主Server .js文件上声明,并传递到每个路由文件的相对函数。无论如何,任何建议都解决了这个问题,因为这些事情与非解析请求无关,我想如果这些事情中的任何一个是错误的,我会看到从控制台或其他地方输出的错误。@MarcHernández Put
app.all('/*',(req,res)=>{return res.status(404).json({error:'Requested URL not found'});
应用程序之后使用('/api',路由器)并检查将发生什么