【问题标题】:Why wont this post?为什么不发这个帖子?
【发布时间】:2014-09-13 19:44:46
【问题描述】:

我正在使用 mongodb + Express 并在最新版本的 Express 中重写一个旧的 cmets 应用程序。

由于最新 Express 的更改,我不得不更改一些内容。但我遇到了一些问题。

基本上,当我提交表单时,它不会发布到/create。这可能是一个简单的修复,但任何帮助将不胜感激:)

app.js

require('./models/comments'); // require the model before the 'index.js' file is called

var express = require('express'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser');

var routes = require('./routes/index'); var create = require('./routes/create');

var app = express();

// Database stuff var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/comments-app');

// view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade');

app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes); app.use('/create', create);

/// catch 404 and forward to error handler app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err); });

/// error handlers

// development error handler // will print stacktrace if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
        });
    }); }

// production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    }); });


module.exports = app;

Comments.js(模型)

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var CommentSchema = new Schema({
    username: String,
    content: String,
    created: Date
});

module.exports = mongoose.model('Comment', CommentSchema);

index.jade

extends layout

block content
  h1= title
  div.addCommentForm
          form( method="post", action="/create")
          input(type='text', class='nameTxt', name='username')
  div
          span.label Comment :
          textarea(name='comment')
  div#addCommentSubmit
          input(type='submit', value='Save')
br
br
#comments
  - each comment in comments
    div.comment
      div.name comment.username
      div.created_at= comment.created
      br
      div.content= comment.content
      hr

create.js(路由)

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Comment = mongoose.model('Comment', Comment);


router.route('/create')

    .post(function(req, res) {
        var Comment = new Comment()
        username : req.body.username;
        content : req.body.comment;
        created : Date.now();

        Comment.save(function(err) { 
            if (err)
                res.send(err);
            res.send('Comment added');
        });
    });

module.exports = router;

【问题讨论】:

    标签: mongodb express mongoose pug


    【解决方案1】:

    form 标记的翡翠缩进已关闭。确保 HTML 中 form 标记内的 input 标记比您的翡翠中的 form 标记缩进更远,因此它们最终成为 HTML 中 form 标记的子级。

    糟糕

    这玉

    form
    input
    

    产生这个 HTML

    <form></form><input>
    

    已修复

    form
      input
    

    产量

    <form><input></form>
    

    【讨论】:

    • 谢谢,知道这很简单 :) 现在,当我按下提交时出现错误:未找到 404 错误:在 Layer.app.use.res.render.message 未找到 [作为句柄]
    • 您的路线需要 /create/create。您在 2 个 .js 文件中有“/create”。删除其中一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    相关资源
    最近更新 更多