嗨,我可以使用mlab连接并存储到mongodb,但我无法获取表单中的数据以保持刷新。表单从输入框接收用户输入。
任何帮助都会很棒。
谢谢
如果能够为所有请求获取相同的表单数据(无论它们来自何处)是您想要的,那么可能的解决方法如下:
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写了一个示例片段
它工作得很好