【问题标题】:Accepting Data From a Form And Saving It To MongoDB through Mongoose & Express通过 Mongoose 和 Express 从表单接受数据并保存到 MongoDB
【发布时间】:2021-11-03 20:28:23
【问题描述】:

应该很简单,但我遇到了障碍。

表格尽可能简单。只是一个标题字段和一个正文字段。

我希望从表单中返回一个看起来像这样的对象:

{title:'The Title', body:'This is some body text'}

或者这样:

{'title':'The Title', 'body':'This is some body text'}

相反,我得到的是这样的:

{ '”title”': 'The Title', '”body”': 'This is some body text' }

对象键、标题和正文用单引号和双引号括起来。

保存到数据库的对象如下所示:

{ _id: new ObjectId("6182e9ed83c9bbfd6e753ac5"), __v: 0 }

换句话说,保存到数据库的文档只有一个 ObjectId,没有别的。我通过使用 Compass 检查数据库来检查这一点。

然后我硬编码了我想要的对象,覆盖了我从表单中收到的内容。这导致将其保存在数据库中:

{
  title: 'The Title',
  body: 'This is some body text',
  _id: new ObjectId("6182ea6b2b5a9c8ea3324668"),
  __v: 0
}

所以问题显然是用单引号和双引号将对象键括起来。我花了整整一个下午的时间研究这个,但我被困住了。

然后我遇到了另一个问题。无论我多么努力,我都无法发布问题,因为我不断收到以下信息:

您的代码格式似乎不正确

三个小时后我放弃了。您可以在 PDF 中找到我的代码。这是链接:

https://drive.google.com/file/d/1ShfIKNXwEHBuxJ_uBGEf9s1jxb-DripB/view

这是非常简单的教科书内容。你直接到了底部,看到了快递编码。

求助!!!!!!

客户端代码

<!DOCTYPE html>

<html lang="en">

    <%-include('layouts/header');-%>

    <body>

        <!-- Navigation-->

        <%-include('layouts/navbar');-%>

        <!-- Page Header-->

        <header class="masthead" style="background-image: url('assets/img/contact-bg.jpg')">

            <div class="container position-relative px-4 px-lg-5">

                <div class="row gx-4 gx-lg-5 justify-content-center">

                    <div class="col-md-10 col-lg-8 col-xl-7">

                        <div class="page-heading">

                            <h1>Create New Post</h1>

                            <span class="subheading">Have questions? I have answers.</span>

                        </div>
                    </div>

                </div>

            </div>

        </header>

        <!-- Main Content-->

        <div> 

     
            <form action="/posts/store" method="POST">

                <label>Title</label><br>
 
                <input type="text" class="form-control" placeholder="Title" id="title" name=”title”>

                <br>

                <label>Body</label><br>

                <textarea rows="5" id="body" name=”body” ></textarea>

            <br>

                <button type="submit" >Send</button>

            
            </form> 

        </div>

            
            <!-- (all formatting removed from form)--->

        <!-- Footer-->

        <%-include('layouts/footer');-%>

        <!-- Bootstrap core JS-->

        <%-include('layouts/scripts');-%>

        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>

        <!-- Core theme JS-->

        <script src="js/scripts.js"></script>

        <!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-->

        <!-- * *                               SB Forms JS                               * *-->

        <!-- * * Activate your form at https://startbootstrap.com/solution/contact-forms * *-->

        <!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-->

        <script src="https://cdn.startbootstrap.com/sb-forms-latest.js"></script>

    </body>

</html>

【问题讨论】:

  • 请为您的问题添加一些标记。阅读how do I format my posts using MarkDown or HTML 了解更多详情。这将有助于使您的问题和代码更具可读性。
  • 另外,在您的问题中包含您问题的相关代码作为代码。共享代码的 PDF 链接为试图提供帮助的人创建了更多步骤,更不用说它会给其他用户带来潜在的安全风险。 SO 有足够的格式和一个 sn-p 编辑器,您可以在其中展示甚至运行您的代码。
  • 嗨。相信我,我尝试了三个小时来按照您的建议进行操作。我仍然无法发帖。无论我尝试什么,我都不断收到这条消息,说我的代码格式不正确。对任何不便深表歉意。
  • 请提供您的客户端代码
  • 嗨 Mohammad,在上面添加了客户端代码。我应该补充一点,我已经删除了所有引导类。

标签: javascript node.js mongodb express mongoose


【解决方案1】:

在这一行 &lt;input type="text" class="form-control" placeholder="Title" id="title" name=”title”&gt;name=”title” 更改为name="title"

为这条线做这件事&lt;textarea rows="5" id="body" name=”body” &gt;&lt;/textarea&gt;name=”body” 更改为name="body"

【讨论】:

  • 谢谢。现在我觉得自己真的很愚蠢。我已经查看该代码几个小时了,但我没有意识到我引用了错误的引号。
猜你喜欢
  • 1970-01-01
  • 2013-08-16
  • 2015-08-15
  • 1970-01-01
  • 2017-07-27
  • 2022-11-10
  • 2020-08-18
  • 2017-12-09
  • 2014-02-10
相关资源
最近更新 更多