【问题标题】:How to send date when submitting a form with Node.js and Express使用 Node.js 和 Express 提交表单时如何发送日期
【发布时间】:2018-04-06 11:57:33
【问题描述】:

我关注了这个tutorial,在那里我可以制作一个用户提交评论和姓名的表单。但是,我想发送用户按下提交按钮的日期。似乎它只保存用户放入文本字​​段的数据。我不希望用户自己能够做到这一点。我该怎么做?

我之前用的是jQuery,但是改成Node.js/Express,因为我不得不把数据保存到数据库中,我不是很懂。

index.ejs 上的代码:

  <form action="/tweets" method="POST">
 <input type="name" id="name" placeholder="name" name="name">
 <textarea type="text" id="tweet" placeholder="What's up?" name="tweet"></textarea>
 <button type="submit">Tweet!</button>
 </form>

每当我按下提交。名称和推文已保存,但我不知道如何保存日期。

.js 代码是这样的:

app.post('/tweets', (req, res) => {
db.collection('tweets').save(req.body, (err, result) => {
 if (err) return console.log(err)

console.log('saved to database')
res.redirect('/')
})
})

当我使用 jQuery 时,我在 index.html 中有一个这样的按钮:

<input type="button" id="addTweet" value="Tweet!"/>

在 .js 文件中的哪个位置是这样的:

  $('#addTweet').click(function(){
var addObj = {
  "name": $('#name').val(),
  "date": getTodayDate(),
  "body": $('#tweet').val()
}

这样我可以保存他们单击按钮时的日期。在 Node.js 上,我不明白如何/在哪里可以输入日期。

【问题讨论】:

  • 除非您希望用户能够操作它,否则我不会在前端获取这些数据。但是,在后端,您可以创建一个 new Date() 并将其保存到数据库中的一个字段(可能是 created_at)。
  • @snapjs 我希望在用户按下“提交”时保存日期。我现在已经用代码编辑了帖子,但我不明白我应该将日期发送到哪里。

标签: javascript jquery node.js mongodb forms


【解决方案1】:

一种可能的选择是在您保存请求时对其进行修改。这当然假设您不必对底层数据库进行任何结构更改。

app.post('/tweets', (req, res) => {
  req.body.created_at = new Date();
  db.collection('tweets').save(req.body, (err, result) => {
    if (err) return console.log(err)

    console.log('saved to database')
    res.redirect('/')
  })
})

【讨论】:

    【解决方案2】:

    您可以在提交表单之前运行一个 JavaScript 函数,但老实说,您最好在服务器上设置提交日期,因为您并不关心客户端计算机上的时间.您的数据库可能可以使用时间戳字段为您执行此操作,或者您可以在快速路由的节点中执行此操作。

    如果您提供有关如何构建路线以及您使用的数据库的更多详细信息,我将提供更多详细信息。

    【讨论】:

    • 嗨!我现在编辑了这篇文章,在那里我解释了我之前用 jQuery 所做的事情。我使用 mongodb 来保存数据,但只是不明白我可以在哪里发送日期。
    猜你喜欢
    • 2019-08-27
    • 2018-10-08
    • 2014-04-04
    • 1970-01-01
    • 2019-02-07
    • 2015-11-07
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多