JsStore bulkInsert问题

时间:2018-02-16 16:41:21

标签: javascript indexeddb

我一直在看JsStore,现在正在玩几个小时的入门教程。我正在使用网站外的“教师”数据库,并希望插入一些数据。

var Value = [{TeacherName: "MR. BAUER", Description: "Lane's Teacher"}, {TeacherName: "MRS. BAUMAN", Description: "Lane's Aide"}, {TeacherName: "MRS. STEWART", Description: "Annabelle's Teacher"}, {TeacherName: "MR. GARLAND", Description: "Alex's Teacher"}];

Connection.insert({
Into: "Teachers",
Values: Value ,//you can insert multiple values at a time
OnSuccess:function (rowsAffected){
if (rowsAffected > 0)
{
alert('Successfully Added');
}
},
OnError:function (error) {
alert(error.value);
}
});

这很有效。接下来我转到'bulkInsert',文档看起来很简单,就是将'insert'更改为'bulkInsert'

我清除了缓存并再次运行该页面,并收到此错误:

  

DOMException:无法在'IDBObjectStore'上执行'add':评估   对象存储库的关键路径没有产生值。

这是唯一的变化,我看不出我错过的问题。对于未在文档中列出的bulkInsert有一个额外的步骤吗?

问题的视频示例:https://youtu.be/d-Jxx54c3dw

2 个答案:

答案 0 :(得分:1)

在您的视频中,看起来关键路径是TeacherId,但在您的Values数组中,没有任何对象具有该属性。也许这就是问题所在。或者你错误地禁用了autoIncrment。请参阅the Structuring the Database section

答案 1 :(得分:0)

如jsstore(http://jsstore.net/tutorial/bulk-insert) -

的文档中所述
  

与插入api相比,它要快得多,因为它不会检查和   返回任何东西

这意味着所有列选项,如自动增量,默认等都不会起作用。此外,它不能确保所有数据都已插入。

您收到的错误说明 - 您没有为主键提供任何值。这是因为您为主键指定了AutoIncrement,但在使用bulkInsert时不会计算AutoIncrement。

现在您的问题是为什么要使用批量插入?

批量插入的使用是 - 一次插入大量数据。

例如 - 您在服务器或Excel工作表或json文件中有数千个数据,并且您希望非常快速地将这些数据插入indexeddb,而无需检查或修改任何数据。

希望这对你的问题有足够的解释。

相关问题