@airnauts/airside-adapter-mongo
v0.9.1
Published
MongoDB repository adapter for the Airnauts commenting tool server.
Readme
@airnauts/airside-adapter-mongo
MongoDB repository adapter for the Airside server. Persists threads and attachments to a MongoDB Atlas (or self-hosted) database.
Installation
pnpm add @airnauts/airside-adapter-mongo mongodbQuick start
import { mongoRepository } from '@airnauts/airside-adapter-mongo'
const repository = mongoRepository({ uri: process.env.MONGODB_URI! })Pass repository to createAirsideServer from @airnauts/airside-server (or to createAirsideAppRoute / createAirsidePagesRoute from @airnauts/airside-integration-next). The adapter connects lazily on first use.
API reference
mongoRepository(opts)
The recommended factory for most setups. Connects lazily on first use and memoizes the connection under a cacheKey so hot reloads and warm serverless invocations share the same client.
mongoRepository({
uri: string // MongoDB connection string (required)
cacheKey?: string // memoization key, default "mongo"
}): RepositorycreateMongoRepository(opts)
Lower-level factory for callers that manage their own Db instance:
import { createMongoRepository, ensureIndexes } from '@airnauts/airside-adapter-mongo'
import { MongoClient } from 'mongodb'
const client = new MongoClient(process.env.MONGODB_URI!)
const db = client.db()
await ensureIndexes(db)
const repository = createMongoRepository({ db })ensureIndexes(db)
Creates the required indexes on the threads and attachments collections. Safe to call on every startup (createIndexes is idempotent). Call once during app boot when using createMongoRepository.
The
mongoRepositoryconvenience callsensureIndexesautomatically the first time it connects.
Requirements
- Node.js ≥ 18
- MongoDB ≥ 5.0 (Atlas or self-hosted)
mongodb^6.12.0 (peer dependency, installed separately)
Related packages
@airnauts/airside-server— defines theRepositoryinterface@airnauts/airside-adapter-postgres— PostgreSQL alternative@airnauts/airside-adapter-memory— in-memory adapter for dev/tests@airnauts/airside-integration-next— Next.js integration that accepts this adapter
License
MIT © Airnauts
