datastore - 本地储存
约 686 字大约 2 分钟
datastore即本地存储,采用key-value形式存储,类似于第一代API中的storages
模块,并增加了异步读取、数据加密、自定义序列化的功能。
datastore支持number
、boolean
、string
、Array
、Object
、null
、undefined
等可转换为json的数据类型。
datastore保存的数据除非应用被卸载或者被主动删除,否则会一直保留。
不同应用的数据是隔离的,也即在Auto.js Pro本体和打包的应用中的数据并不互通;同一应用的不同脚本的数据是共享的,在datastore不加密的情况下,任何脚本只要知道datastore名称便可以获取到相应的数据。
若要保存稍微敏感的数据,可以在创建datastore时指定encryptionKey
对本地存储进行加密。但是需要注意,其他人可能通过你的代码获取密钥并解密数据,保存在客户端的数据相对是不安全的。参见encryptionKey。
另外,datastore保存的数据和第一代API的storages
并不互通,即使名称相同,它们之间的数据也不共享。
示例
const { createDatastore } = require('datastore');
// 创建本地存储,其名称为example.test
const datastore = createDatastore('example.test');
async function main() {
// 在本地存储中写入值
await datastore.set('hello', 'world');
// 从存储中获取值
console.log('get hello:', await datastore.get('hello'));
// 移除本地存储的值,并返回被移除的值
console.log('remove hello:', await datastore.remove('hello'));
// 检查是否包含某个key
console.log('contains hello:', await datastore.contains('hello'));
// 保存和读取复杂对象(对象必须是可转换为JSON的数据)
await datastore.set('versions', { autojspro: process.versions.autojspro, nodejs: process.version })
const versions = await datastore.get('versions');
console.log('versions:', versions);
// 清空本地存储
await datastore.clear();
}
main().catch(console.error);
目录
接口
函数
函数
createDatastore
▸ createDatastore(name
, options?
): Datastore
创建一个本地存储。不同名称的本地存储的数据是隔开的,而相同名称的本地存储的数据是共享的。
若本地存储已加密,并且创建时未指定或指定了错误的密钥,则创建时也不会发生错误,在获取数据时可能获取到错误的数据或者抛出反序列化异常。
示例
// 创建加密的本地存储,密钥为长度16, 32或64的字符串
const encrptedDatastore = createDatastore('example.encrypted', { encryptionKey: 'bCGwOgwzsCqXQFaW' });
async function main() {
// 使用加密的本地存储保存数据
await encrptedDatastore.set('timestamp', Date.now());
// 从加密的本地存储中读取数据
console.log('timestamp:', await encrptedDatastore.get('timestamp'));
}
main().catch(console.error);
参数
名称 | 类型 | 描述 |
---|---|---|
name | string | 为创建的本地存储数据命名 |
options? | DatastoreOptions | 创建的本地存储的选项 |