【问题标题】:How to save Data in MongoDB from forms如何从表单中将数据保存在 MongoDB 中
【发布时间】:2023-03-31 14:30:02
【问题描述】:

我有一个表格。我需要从表单中获取文本以将其保存在 MongoDB 中。

tweets.ejs:

<form method="post" action="/tweets">
<input type="text" id="txt" name="text"/>
<input type="button" id="btn" value="Touch me">
</form>

这是我的路由文件 tweets.js:

var Message = require('models/messages');
exports.get = function(req,res) {
    res.render('tweets')
};

我使用猫鼬模式(models/messages.js):

var mongoose = require('../libs/mongoose'),
    Schema = mongoose.Schema;
var MessageSchema = new Schema({
    message: String,
    date: Date
});
var Message = mongoose.model('Message', MessageSchema);
module.exports = Message;

我在 tweets.js 中尝试了 set var m = req.body.text,但我认为这绝对是错误的方式

exports.post = function(req,res){
    var m = new Message;
    m.message = req.body.text;
    m.save(); }

请告诉我如何正确操作!

【问题讨论】:

  • 你是否创建了 /tweets POST 路由?

标签: javascript node.js forms mongodb mongoose


【解决方案1】:

在你的路由或应用文件路由中应该是

var tweets = require("tweets");
app.post("/tweets", tweets.post);

在你的 tweets.js 文件中

var Message = require('models/messages');
exports.post = function(req,res){
console.log(req.body.text)
var msg = {message:req.body.text,date:new Date()};

Message(msg).save(function(error,data){
if (data){
console.log("Save "+ JSON.stringify(data));
res.send({statud:"OK",msg:data})
}
else{
res.send({statud:"Cancel"})
}
});
}

【讨论】:

  • 是的!谢谢!我没有在路线中使用帖子(我只是忘记了o_O)。现在它保存了数据,但是当我按下提交按钮时页面无法重新加载并且只是冻结。我将 type=button 更改为 type=submit
  • response 没有设置,现在编辑并添加 res.send().. 每个 REQUEST 都有 RESPONSE ..
  • 知道了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 2020-09-15
  • 2013-02-17
  • 2015-06-14
相关资源
最近更新 更多