在我的SQL服务器中,我在一个表中有64k +记录。我想将这些记录存储在我的客户端IndexedDB数据库中。
我想创建这些数据的XML文件,读取这些文件并将内容保存在我的IndexedDB中。我在阅读XML文件并将其保存到IndexedDB时陷入困境。
如何将XML文件保存到IndexedDB数据库?
答案 0 :(得分:3)
Manikandan K,感谢您加入Stackoverflow讨论IDB。
要记住的是,IndexedDB是一个“索引键值存储”,有点像面向文档的NoSQL数据库,如MongoDB,如果您熟悉的话。这意味着它与来自关系数据库(如列和表)的概念不匹配。
IDB存储的是“对象”,因此最好将SQL数据库转换为“类似对象”的格式。 JavaScript对象表示法,或“JSON”表示。
如果将数据库转换为XML,您仍然必须将其转换为IDB可以存储的对象。因此,Kristof将您的数据库直接转换为JSON是一个很好的建议。
为了帮助您绕过这个,请将表视为对象。该表将包含行和列,您可以将其映射到JavaScript对象属性和值。可以存储大多数“原始”JavaScript值,例如字符串,数字等。
例如,如果您的SQL表看起来像这样:
+------+--------+--------+
| | ColA | ColB |
+------+--------+--------+
| Row1 | CellA1 | CellB1 |
| Row2 | CellA2 | CellB2 |
| Row3 | CellA3 | CellB3 |
+------+--------+--------+
您的JavaScript对象可能如下所示:
var myObjectToStore = {
'Row1': { 'ColA': 'CellA1', 'ColB': 'CellB1' },
'Row2': { 'ColA': 'CellA2', 'ColB': 'CellB2' },
'Row3': { 'ColA': 'CellA3', 'ColB': 'CellB3' }
};
该对象的JSON表示非常相似:
{
"Row1": {
"ColA": "CellA1",
"ColB": "CellB1"
},
"Row2": {
"ColA": "CellA2",
"ColB": "CellB2"
},
"Row3": {
"ColA": "CellA3",
"ColB": "CellB3"
}
}
您可以使用像JSON.parse
这样的浏览器本机方法将其转换为可以直接存储到IDB中的对象,而无需进行其他转换。
答案 1 :(得分:2)
我不会使用XML。为什么不编写一个以JSON格式提供数据的查询?这可以更容易地将其保存到IDB中。
在IDB中存储如此大量的记录并不是真的可取。想想你想要这样做的原因。也许还有其他方法可以实现相同的功能,而无需传输所有这些数据。