Javascript 使用Node.js向MongoDB提交数据时出现的问题
我正在尝试将表单数据从页面发送到Node.js中的MongoDB 我遇到的问题是当我单击“添加组”按钮提交数据时。。该页面试图完成请求,但在尝试将数据推送到数据库时,该页面似乎卡住了。因此,它只是坐在那里,卡住了,试图获取输入的数据并将其放入数据库 这是我的团队模型:Javascript 使用Node.js向MongoDB提交数据时出现的问题,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在尝试将表单数据从页面发送到Node.js中的MongoDB 我遇到的问题是当我单击“添加组”按钮提交数据时。。该页面试图完成请求,但在尝试将数据推送到数据库时,该页面似乎卡住了。因此,它只是坐在那里,卡住了,试图获取输入的数据并将其放入数据库 这是我的团队模型: var mongoose = require('mongoose'), Schema = mongoose.Schema, path = require('path'); var GroupsSchema
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
path = require('path');
var GroupsSchema = new Schema({
groupName: {type: String}
});
GroupsSchema.virtual('uniqueId')
.get(function(){
return this.filename.replace(path.extname(this.filename), '');
});
module.exports = mongoose.model('Groups', GroupsSchema);
这是我的组控制器:
var Models = require('../models');
module.exports = {
index: function(req, res){
var viewModel = {
groups: []
};
Models.Group.find({}, function(err, groups){
if(err){
throw err;
}else{
viewModel.groups = groups;
res.render('addGroup', {title: 'Admin Add Product Group', adminloggedin: true, subtitle: 'Add a Group', underheaderp: ''});
}
});
},
create: function(req, res){
var saveGroup = function(){
Models.Group.find({}, function(err, groups){
if(groups.length > 0){
saveGroup();
}else{
Models.Group.find({},function(err, groups){
if(err){
throw err;
}else{
var newGrp = new Models.Group({
groupName: req.body.groupname
});
newGrp.save(function(err, group){
console.log('Successfully inserted Group');
res.redirect('admin/addGroup');
});
}
});
}
});
};
saveGroup();
}
};
我目前的路线:
var express = require('express'),
router = express.Router(),
addGroup = require('../controllers/addGroup');
module.exports = function(app){
router.get('/admin/addGroup', addGroup.index);
router.post('/admin/addGroup', addGroup.create);
app.use(router);
}
和我的addGroup车把页面
<!-- Add a Product Group Form -->
<div class="row">
<div class="col-md-6">
<form action="/admin/addGroup" method="post">
<fieldset class="form-group">
<label for="newGroupName">Group Name:</label>
<input type="text" class="form-control" name="groupname">
</fieldset>
<fieldset class="form-group">
<label for="groupImageFolder">Image Folder Name:</label>
<input type="text" class="form-control" name ="groupImageFolder">
</fieldset>
<button type="submit" class="btn btn-success" type="button">Add Group</button>
</form>
</div>
</div>
组名:
图像文件夹名称:
添加组
不幸的是,我还没有找到调试我的应用程序的好方法,因为我还是一个新的程序员。任何建议都会很好
问题一定在我的控制器中:创建
我可能在哪里定义我的var newGrp并试图将其设置为我的组模型
我如何修复它,使其将输入的数据保存到MongoDB
非常感谢您的帮助。如果
groups.length>0
,为什么要调用saveGroup()
?它是递归调用的,永远不会结束。我试图做一个糟糕的努力检查,看看它是否已经存在,但这是一个很大的错误。我把它拿出来,用if(err){saveImage();}替换了它,现在它工作得非常好!!!是的,这是个错误。也可以使用Models.Group.count()
而不是Models.Group.find()
,因为find()
加载所有记录,但count()
只返回记录数。不要调用Models.Group.find()
两次。谢谢!我甚至不知道我怎么会打了两次电话,但它是固定的,仍然有效。再次感谢您的帮助如果groups.length>0
,为什么要调用saveGroup()
?它是递归调用的,永远不会结束。我试图做一个糟糕的努力检查,看看它是否已经存在,但这是一个很大的错误。我把它拿出来,用if(err){saveImage();}替换了它,现在它工作得非常好!!!是的,这是个错误。也可以使用Models.Group.count()
而不是Models.Group.find()
,因为find()
加载所有记录,但count()
只返回记录数。不要调用Models.Group.find()
两次。谢谢!我甚至不知道我怎么会打了两次电话,但它是固定的,仍然有效。再次感谢你的帮助