跳至主要內容

datastore - 本地储存

约 686 字大约 2 分钟道无涯

datastore即本地存储,采用key-value形式存储,类似于第一代API中的storages模块,并增加了异步读取、数据加密、自定义序列化的功能。

datastore支持numberbooleanstringArrayObjectnullundefined等可转换为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);

参数

名称类型描述
namestring为创建的本地存储数据命名
options?DatastoreOptions创建的本地存储的选项

返回值

Datastore