我使用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
拉出保存功能,它将按照它应该打印的文本。我认为问题在于保存功能。
答案 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
});