使用mongodb node express使数据持久化为表格

时间:2019-03-18 19:28:27

标签: node.js mongodb express mlab

嗨,我可以使用mlab连接并存储到mongodb,但是我无法获取表单中的数据以保持刷新状态。 该表单从输入框接收用户输入。

任何帮助都会很棒。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您希望能够为所有请求(无论来自何处)获取相同的表单数据,则可能的解决方法如下:

1)将初始表单数据(可能为空)存储在数据库中,获取ObjectId并将其硬编码在您的代码中,这样,所有更新将仅针对该特定的MongoDB文档进行。

2)表单路由(下一个)除了提供具有该格式的文件外,什么都不做

app.get('/form1', function (req, res) {
    res.sendFile(__dirname + '/public');
//record.find({"_id": ObjectId("MLAB ID")})......dont do this


});

3)应该有另一条发送表单数据的路由

app.get('/getdata', function(req, res) {
        record.find({"_id": ObjectId("MLAB ID")}, function(err, doc) {
            res.send(doc)
        })
    });

4)您发送给客户端的静态文件应具有javascript函数,以便在窗口加载后立即请求表单数据,然后从接收到的数据中设置输入元素的值:

 window.onload = function() {
        //make a GET request to /getdata to get form data....store it in obj
        //then set the input values
       document.getElementById("yourchoice").value = obj.yourchoice;
        //and set the value of other input fields ....in similar amnner

    }

5)您发出的POST请求应更新该特定文档(findOneAndUpdate ??)

此方法的缺点:

对于一个操作,我们先从服务器请求一个文件,然后再请求另一个请求以获取表单数据,所以两次请求一个操作,因为我们不能同时使用res.sendFile()和res.json()……要解决此问题,还可以使用模板引擎在HTML文档中隐藏表单数据。可以轻松找到更多关于此的信息。无论如何,以上方法确实可以解决您的目的。

我希望我正确理解了问题陈述。

编码愉快!!

编辑:尽管上述要点是解释性的,但我已经在https://pastebin.com/AvgVyx7b

上写了一个示例片段。

效果很好