使用 mongodb node express 使数据持久化
Make data persist in form using mongodb node express
您好,我可以使用 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 加载后立即请求表单数据,然后设置输入值收到的数据中的元素:
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
它工作得很好
您好,我可以使用 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 加载后立即请求表单数据,然后设置输入值收到的数据中的元素:
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
它工作得很好