大家好我有一个相当奇怪的问题。我已经验证我能够与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' }
答案 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.');
});
});