如何使用express / mongoose和客户端JS将HTML类发布到mongoDB集合中?

首先,我的编程知识完全在前端,但是我正在试验node,express,mongoose和mongodb。 我正在使用别人的模板尝试以正确的方式构build应用程序,但在连接点时我迷路了。 我有以下的玉器:

form(method='post', action="/post/comment/" + post.id) textarea(name='text') input(type='submit', value='Save') 

结合这个来自routes / posts.js文件

  app.post("/post/comment/:id", loggedIn, function (req, res, next) { var id = req.param('id'); var text = req.param('text'); var author = req.session.user; Comment.create({ post: id , text: text , author: author }, function (err, comment) { if (err) return next(err); res.redirect("/post/" + id); }); }); 

这是models / comment.js:

 var mongoose = require('mongoose'); var ObjectId = mongoose.Schema.Types.ObjectId; var createdDate = require('../plugins/createdDate'); var schema = mongoose.Schema({ text: { type: String, trim: true, validate: validateText } , post: { type: ObjectId, index: true } , author: String }) function validateText (str) { return str.length < 250; } schema.plugin(createdDate); module.exports = mongoose.model('Comment', schema); 

现在这工作正常,提交一个评论,并保存在数据库中。 问题是,我不想保存一个评论,而是一个函数之后的HTML操纵它。 所以我试了一下:

 var everything = $('.whatever').html(); $.post("/post/comment/:id", everything, function(){ console.log('html saved!') } ) 

但是我得到了一个POST http://localhost:3000/post/comment/:id 500 (Internal Server Error)现在我知道我可能没有idvariables,所以我尝试粘贴在url,似乎经历了没有错误,但没有出现在数据库中。 我知道这可能不是一个具体的问题,我可能会对这个完全错误的,但任何大方向将不胜感激。 谢谢。

你在这里似乎有一些问题。 试着看看下面的内容:

  1. 您的路由器被设置为接收“/ post / comment /:id”的post,但是您在最后一个代码块中的post发布到“/ post / comments /:id”,其中comments是复数。 这可能会导致一个404。(检查您的浏览器的JavaScript控制台的networking选项卡。它可能会在你没有意识到的情况下失败)。

  2. 您的500错误可能来自您直接张贴“:id”的事实,而不是实际的标识符。 许多节点应用程序将设置一个app.param()模块来validation这些参数,并且当您的朋友的模板没有得到它所期望的数字时,模板可能会崩溃。

  3. 您发布的数据必须与您要保存的模型的模式相匹配。 在架构中未命名的任何密钥将在保存之前被剥离,在您的情况下,如果没有任何密钥匹配,它将只是一个默认的注释实例,根本不会保存。

希望有所帮助!