保存Mongoose模型时的ERR_EMPTY_RESPONSE

时间:2014-01-27 07:15:04

标签: javascript node.js mongodb express mongoose

我使用Mongoose和Express.js制作一个简单的待办事项列表应用程序。当我从表单发布时,我想保存列表项并在下一页上呈现消息。 (稍后将使用重定向替换。)在Chrome中,页面将停止,直到最终显示

,而不是显示消息。
  

未收到任何数据
  无法加载网页,因为服务器未发送任何数据   重新加载此网页   按重新加载按钮重新提交加载页面所需的数据   错误代码:ERR_EMPTY_RESPONSE

Firefox说The connection to the server was reset while the page was loading.

我的路线如下:

exports.post = function(req, res) {
    var Item = require('../models/Item')

    new Item({
        content: req.body.content
    }).save(function(){
        res.send('item saved')
    })
}

我也尝试过:

var item = new Item({
    content: req.body.content
})

item.save(function(){
    res.send('item saved')
})

做同样的事情。

我的模型看起来像这样:

var mongoose = require('mongoose')

var ItemSchema = new mongoose.Schema({
    content: String
})

var Item = mongoose.model('Item', ItemSchema)
module.exports = Item

如何在保存中执行该功能?

编辑: 这是客户端代码:

layout.jade

doctype html
html
  head
    meta(charset='utf-8')
    title Listocracy
  body
    block content

index.jade

extends layout

block content
  h1 Listocracy

  form(method='post', action='/item')
    input(type='text', name='content')
    button(type='submit') Add Item

如果我将res.send拉出保存功能,它将按照它应该打印的文本。我认为问题在于保存功能。

1 个答案:

答案 0 :(得分:2)

尝试这种方式:

(new Item({
    content: req.body.content
})).save(function(){
    res.send('item saved')
});

更好的方式:

var item = new Item({
    content: req.body.content
});

item.save(function(err){
    if(!err)
       res.send('item saved')
    // else log and send error message
});