2014-01-27 3 views
0

Я использую Mongoose с Express.js для создания простого списка приложений. Когда я отправляю из формы, я хочу сохранить элемент списка и вынести сообщение на следующей странице. (. Это будет позже заменен редиректа) Вместо отображения сообщения, в Chrome страница будет простаивать, пока он окончательно не говоритERR_EMPTY_RESPONSE при сохранении модели Mongoose

No data received
Unable to load the webpage because the server sent no data.
Reload this webpage.
Press the reload button to resubmit the data needed to load the page.
Error code: 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 

Как получить функцию Сохранить, чтобы выполнить?

EDIT: Вот код на стороне клиента:

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 из сохранения функции, она напечатайте текст так, как предполагается. Я думаю, проблема связана с функцией сохранения.

+0

Я забыл подключить к MongoDB. – Eva

ответ

2

Попробуйте так:

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

Nicer путь:

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

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

Я получаю '500 TypeError: undefined не является функцией' Не уверен, какую функцию они имеют в виду, потому что все привязано, но разделение на него возвращает проблему ERR_EMPTY_RESPONSE. – Eva

+0

Изменен второй на '(item) .save (...)'. Теперь он говорит, что '500 TypeError: object не является функцией' для этой строки. Он читает '(item)' как функцию? – Eva

+0

@Eva см. Отредактированный ответ – karaxuna

Смежные вопросы