Dexie.js 使用 .equals 的查询不适用于 localStorage
Dexie.js query with .equals not working with localStorage
我正在尝试使用 Dexie.js 从 indexedDB 获取值,但它无法识别 localStorage 的值。
我尝试了 async/await,promises,将 localstorage 调用放置在创建的、安装的、外部导出默认值上,并且 none 这些方法奏效了。
fetchData() {
return dbDexie.tactics1
.where('i')
.equals(localStorage.getItem("id")) // Here is the problem
.toArray()
.then((r) => r[0].f);
}
.equals
严格相等
equals
方法是严格的相等性测试,所以如果id
是indexedDB
中的数字类型,那么localStorage
返回的字符串类型不会匹配,因为类型不同。而 localStorage
只存储字符串。
因此,在从 localStorage
中检索数据时,通常会看到 JSON.parse
用于转换序列化数据:
fetchData() {
return dbDexie.tactics1
.where('i')
.equals(JSON.parse(localStorage.getItem("id")))
.toArray()
.then((r) => r[0].f);
},
或者您可以更明确地将 localStorage
值转换为数字类型:
.equals(Number(localStorage.getItem("id")))
我正在尝试使用 Dexie.js 从 indexedDB 获取值,但它无法识别 localStorage 的值。
我尝试了 async/await,promises,将 localstorage 调用放置在创建的、安装的、外部导出默认值上,并且 none 这些方法奏效了。
fetchData() {
return dbDexie.tactics1
.where('i')
.equals(localStorage.getItem("id")) // Here is the problem
.toArray()
.then((r) => r[0].f);
}
.equals
严格相等
equals
方法是严格的相等性测试,所以如果id
是indexedDB
中的数字类型,那么localStorage
返回的字符串类型不会匹配,因为类型不同。而 localStorage
只存储字符串。
因此,在从 localStorage
中检索数据时,通常会看到 JSON.parse
用于转换序列化数据:
fetchData() {
return dbDexie.tactics1
.where('i')
.equals(JSON.parse(localStorage.getItem("id")))
.toArray()
.then((r) => r[0].f);
},
或者您可以更明确地将 localStorage
值转换为数字类型:
.equals(Number(localStorage.getItem("id")))