存储层 Storage Layer

Nitro 提供了一个内置的存储层,可以抽象文件系统或数据库或任何其他数据源。

useStorage() 是使用 内存驱动程序createStorage 实例。

**示例:**简单(内存中)操作

js
await useStorage().setItem('test:foo', { hello: 'world' })
await useStorage().getItem('test:foo')

// 您还可以在 useStorage(base) 中指定基数
await useStorage('test').setItem('foo', { hello: 'world' })
await useStorage('test').getItem('foo')

详细用法见Unstorage

Mountpoints

您可以使用 storage 选项安装存储驱动程序:

ts
nitro.config.ts
ts
import { defineNitroConfig } from 'nitropack/config'

export default defineNitroConfig({
  storage: {
    redis: {
      driver: 'redis',
      /* redis connector options */
    },
    db: {
      driver: 'fs',
      base: './data/db'
    }
  }
})

Usage:

js
await useStorage('redis').setItem('foo', { hello: 'world' })
await useStorage('redis').getItem('foo')
// 或者
await useStorage().setItem('redis:foo', { hello: 'world' })
await useStorage().getItem('redis:foo')

您可以在 unstorage 文档 上找到驱动程序列表。

在开发中,Nitro 使用 FS 驱动程序 添加“缓存”挂载点,如果使用 Nuxt

js
await useStorage('cache').setItem('foo', { hello: 'world' })
await useStorage('cache').getItem('foo')

Development storage

您可以在开发期间使用 devStorage 键覆盖存储配置,这在您在生产中使用数据库并希望在开发中使用文件系统时非常有用。

ts
nitro.config.ts
ts
export default defineNitroConfig({
  // 生产
  storage: {
    db: {
      driver: 'redis',
      /* redis connector options */
    }
  },
  // 开发
  devStorage: {
    db: {
      driver: 'fs',
      base: './data/db'
    }
  }
})