MongoDB model.save()不返回任何错误并无限期挂起

时间:2018-01-04 14:55:16

标签: node.js mongodb express

大家好我有一个相当奇怪的问题。我已经验证我能够与MongoDB建立连接,我的帖子操作是从我的html表单路由到表达,并且我的模型和架​​构看起来是正确的。当我填写并尝试提交表单时,网页会永久挂起并且什么都不做。我已验证IP已列入白名单,连接用户具有完全权限,我可以通过mongo shell手动创建集合。我被卡住了。

以下是我的版本:

MongoDB:地图上的3.4。

"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"express": "~4.15.5",
"express-session": "^1.15.6",
"mongodb": "^3.0.1",
"mongoose": "^5.0.0-rc1",
"morgan": "~1.9.0",
"pug": "2.0.0-beta11",

我的流程是html格式>表达路由器> mongodb的model.save()。以下是我正在使用的源文件:

router.js

var express = require('express');
var router = express.Router();
var Post = require('../models/post.js');

/* GET home page. */
router.get('/', function(req, res, next) {
    res.render('index', { title: 'xxx' });
});

router.post('/', function(req, res){
var postData = new Post(req.body)
console.log(postData);
    postData.save(function(err) {
        if (err) throw err;
        console.log('Author successfully saved.');
    });
});

module.exports = router;

post.js

var url = "mongodb://admin:xxxxxxx@xxx.mongodb.net:27017,xxx.mongodb.net:27017,xxx.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin";

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

// create a schema
var postSchema = new Schema({
    title: String,
    company: String,
    email: String,
    desc: String,
    tags: String,
    created: { 
        type: Date,
        default: Date.now
    }
});

// the schema is useless so far
// we need to create a model using it
var Post = mongoose.model('Post', postSchema);

// make this available to our users in our Node applications
module.exports = Post;

从容器记录输出:

[0mPOST / [0m- [0m- ms - -[0m
{ created: 2018-01-04T14:43:49.755Z,
_id: 5a4e3da5890164111d2ad4ee,
title: 'I am good',
company: '1900',
desc: 'Jjj',
email: 'xxx@gmail.com',
tags: 'Kkkkk' }

1 个答案:

答案 0 :(得分:1)

这是来自快递doc

  

下表中响应对象(res)的方法可以   向客户端发送响应,并终止请求 - 响应   周期。 如果没有从路由处理程序调用这些方法,则   客户请求将被搁置。

这意味着您需要向客户端呈现内容以结束请求/响应周期:

router.post('/', function(req, res){
    var postData = new Post(req.body);

    postData.save(function(err) {
        if (err) throw err;
        res.end('Author successfully saved.');
    });
});
相关问题