@ bigblue 按钮/ tlstore
tlstore 是一个创建和管理数据的库.
在这个文库中,"记录"是存储在打入的ID下的对象.
tlstore 用于 笔画 以存储其数据.
它被设计为与 tlstate (@ bigbluebutton/tlstate) (英语).
使用量
首先为您的记录创建类型 .
interface Book extends BaseRecord<'book'> {
title: string
author: ID<Author>
numPages: number
}
interface Author extends BaseRecord<'author'> {
name: string
isPseudonym: boolean
}
然后创建你的 RecordType 实例.
const Book = createRecordType<Book>('book')
const Author = createRecordType<Author>('author').withDefaultProperties(() => ({
isPseudonym: false,
}))
然后创建你的 RecordStore 举个例子.
const store = new RecordStore<Book | Author>()
然后可以创建记录,添加到商店,更新,并去除.
const tolkeinId = Author.createCustomId('tolkein')
store.put([
Author.create({
id: jrrTolkeinId,
name: 'J.R.R Tolkein',
}),
])
store.update(tolkeinId, (author) => ({
...author,
name: 'DJJ Tolkz',
isPseudonym: true,
}))
store.remove(tolkeinId)
API 密码
RecordStore
这个 RecordStore 班级是图书馆的主要班级.
const store = new RecordStore()
put(records: R[]): void
将一些记录添加到商店. 如果它们已经存在,那就是一个错误.
const record = Author.create({
name: 'J.R.R Tolkein',
id: Author.createCustomId('tolkein'),
})
store.put([record])
update(id: ID<R>, updater: (record: R) => R): void
更新记录。 要同时更新多个记录,请使用 update 方法 TypedRecordStore 课.
const id = Author.createCustomId('tolkein')
store.update(id, (r) => ({ ...r, name: 'Jimmy Tolks' }))
remove(ids: ID<R>[]): void
从商店中取出一些记录 以他们的身份证.
const id = Author.createCustomId('tolkein')
store.remove([id])
get(id: ID<R>): R
以 ID 获取商店记录的值 .
const id = Author.createCustomId('tolkein')
const result = store.get(id)
allRecords(): R[]
获取商店中所有值的阵列 .
const results = store.allRecords()
clear(): void
从商店取出所有记录 .
store.clear()
has(id: ID<R>): boolean
获取记录店是否有记录存储在给定的ID下.
const id = Author.createCustomId('tolkein')
const result = store.has(id)
serialize(filter?: (record: R) => boolean): RecordStoreSnapshot<R>
对面 deserialize从唱片店创建 JSON 有效载荷.
const serialized = store.serialize()
const serialized = store.serialize((record) => record.name === 'J.R.R Tolkein')
deserialize(snapshot: RecordStoreSnapshot<R>): void
对面 serialize。用简单的 JSON 结构定义的记录替换商店的当前记录.
const serialized = { ... }
store.deserialize(serialized)
listen(listener: ((entry: HistoryEntry) => void): () => void
向商店添加新收听器 商店会在每次历史变化时调用函数. 返回一个删除收听器的函数.
store.listen((entry) => doSomethingWith(entry))
mergeRemoteChanges(fn: () => void): void
合并远程源的更改而不会触发听众 .
store.mergeRemoteChanges(() => {
store.put(recordsFromRemoteSource)
})
createDerivationCache(name: string, derive: ((record: R) => R | undefined)): DerivationCache<R>
创建新的衍生缓存 .
const derivationCache = createDerivationCache('popular_authors', (record) => {
return record.popularity > 62 ? record : undefined
})
RecordType
这个 RecordType 类用于定义记录的结构.
const recordType = new RecordType('author', () => ({ living: true }))
RecordType 实例通常与 createRecordType。 。 。 .
create(properties: Pick<R, RequiredProperties> & Omit<Partial<R>, RequiredProperties>): R
创建此类型的新记录 .
const record = recordType.create({ name: 'J.R.R Tolkein' })
clone(record: R): R
切除这种记录.
const record = recordType.create({ name: 'J.R.R Tolkein' })
const clone = recordType.clone(record)
createId(): ID<R>
创建用于此类型记录的ID .
const id = recordType.createId()
createCustomId(id: string): ID<R>
创建自定义 为了记录这种类型.
const id = recordType.createCustomId('tolkein')
isInstance
检查一个值是否是此记录类型的实例 .
const record = recordType.create({ name: 'J.R.R Tolkein' })
const result1 = recordType.isInstance(record) // true
const result2 = recordType.isInstance(someOtherRecord) // false
isId
检查该类型记录的值是否为 ID .
const id = recordType.createCustomId('tolkein')
const result1 = recordType.isId(id) // true
const result2 = recordType.isId(someOtherId) // false
withDefaultProperties
创建带有默认属性的新记录类型 .
const youngLivingAuthor = new RecordType('author', () => ({ age: 28, living: true }))
const oldDeadAuthor = recordType.withDefaultProperties({ age: 93, living: false })
RecordStoreQueries
开始
帮助者
executeQuery
开始
DerivationCache
这个 DerivationCache 类用于创建衍生记录的缓存.
const derivationCache = new DerivationCache('popular_authors', (record) => {
return record.popularity > 62 ? record : undefined
})
createRecordType
一个帮助者用来创建新 RecordType 没有默认属性.
const recordType = createRecordType('author'))
assertIdType
一个帮助者用来断言一个值是特定类型记录的ID.
const id = recordType.createCustomId('tolkein')
assertIdType(id, recordType)
类型
ID
一个用来代表记录的ID的类型.
const id: ID<Author> = Author.createCustomId('tolkein')
BaseRecord
A 类 BaseRecord 是一个有身份和类型的记录。 这是所有记录的基础类型.
type AuthorRecord extends BaseRecord<"author"> {
name: string
age: number
living: boolean
}
AllRecords
一个在唱片店中获取所有记录类型的助手.
type AllAuthorRecords = AllRecords<RecordStore<Author>>
RecordsDiff
描述更改为记录的diff .
CollectionDiff
描述对收藏的更改的 diff .
许可证
该寄存器中的源代码(以及我们的2.0+发行和发行)目前根据Apache-2.0获得许可. 这些许可证在即将发行的"2.0"中可能会被更改. 如果你打算在商业产品中使用拖网,请联系 你好@ bigbluebutton.com。 。 。 .