我正在使用 linq2indexedDB 包装器来处理 IndexedDB。我正在使用 TypeScript,但我认为这与问题无关——它应该只是解释稍微奇怪的语法。我创建了我的数据库并添加了一些对象存储和索引(代码缩短以保持重点):
var databaseDefinition = [{
version: config.version,
objectStores: [
{ name: "Regions", objectStoreOptions: { autoIncrement: false, keyPath: "ID" } },
{ name: "Countrys", objectStoreOptions: { autoIncrement: false, keyPath: "ID" } }
// etc.
],
indexes: [
{ objectStoreName: "Countrys", propertyName: "RegionID", indexOptions: { unique: true, multirow: false } }
// etc.
]
}];
这可行,通过在 chrome F12 工具中检查我的数据库结构,我可以看到预期的 objectStores。然后我尝试一个简单的插入操作:
var region = serverData.Regions[0];
this.db.linq.from("Regions").insert(region, region.ID).then((args) => {
tracer.Trace("Insert success: " + args);
}, (args) => {
tracer.Trace("Insert failure: " + args);
});
这失败了,但args
返回的对象是未定义的,所以我不知道为什么。谁能解释这个问题可能是什么以及我该如何追踪它?
编辑(删除了附加代码,因为它与问题并不严格相关。打开日志记录,如下面 Kristof 的回答中所述,有助于追踪问题,这在下面我自己的回答中得到了解决)。