如何在将用户输入仍显示在屏幕上的同时将用户数据保存到数据库

时间:2019-06-26 05:08:33

标签: javascript html node.js angularjs mongodb

在我的js文件中,我有一个函数可以在屏幕上显示用户数据,但是由于某些原因,这就是阻止数据保存到数据库的原因。我想同时拥有两者,因此如果没有js文件,它将保存到数据库中。

编辑:我基本上想做的是将客户端输入的内容永久上载到屏幕上,以便其他客户端在将其保存到数据库时可以看到所有内容。但是我的问题是我的js脚本阻止了客户端内容保存到数据库中。我对angular并不陌生,但是如果有人可以使用$ http.post提供示例,这对我的要求有所帮助,我将非常感激。

编辑:我发现了我的问题,但还没有完全解决。从button元素中进行ng-click阻止了将客户端数据保存到db,但是现在启用了提交后的按钮,导致提交了许多表单。我该如何处理?我是这个网站的新手,这会改变我的问题吗?

HTML

<form action="/blog" method="POST">
    <div id="textarea-format-structure">
        <textarea name="dummyInfo" id="blogVal" ng-model="textAreaValue" 
         ng-change="textChange()" ng-focus="btnChange = true" />
    </div> 
  <button ng-disabled="btnChange" ng-click="btnChange = true"  class="btnpost">Post</button>
</form> 
<div id="my-posts-blog"></div>

JS

 function postVal() {
     var blogVal = document.getElementById("blogVal");
     var appendVal = document.getElementById("my-posts-blog");
     var create_div = document.createElement("div");

     create_div.textContent = blogVal.value;
     create_div.classList.add("post");
     appendVal.prepend(create_div);

     blogVal.value = "";
  }
      document.getElementById("blogVal").focus();
      var postIt = document.querySelector(".btnpost");
         postIt.addEventListener("click", postVal, false);

NODE.JS

router.post("/blog", (req, res) => { 
       mongo.connect(url, { useNewUrlParser: true }, (err, client) => { 
        var db = client.db("test");
        db.collection("collect").insertOne({ myBlog: req.body.dummyInfo});
   });
 });

1 个答案:

答案 0 :(得分:0)

如果您使用的是angularjs,那么为什么不使用$ http.post?

  • 因此,在ng-click上,您可以在该函数集中进行函数调用 无论您要设置什么变量,都准备好传递数据 然后使用$ http.post在后端拨打电话 参数。它不会刷新您的屏幕。