UNPKG

database-proxy

Version:

Through a set of access control rules configuration database access to realize the client directly access the database via HTTP.

135 lines 4.63 kB
/// <reference types="node" /> import { AccessorInterface, ReadResult, UpdateResult, AddResult, RemoveResult, CountResult, ListIndexesResult, DropIndexResult, CreateIndexResult } from './accessor'; import { Params, Order } from '../types'; import { MongoClient, Filter } from 'mongodb'; import * as mongodb from 'mongodb'; import { LoggerInterface } from '../logger'; import { EventEmitter } from 'events'; import { AggregateStage } from 'database-ql/dist/commonjs/interface'; /** * Mongodb Accessor is responsible for performing MongoDB data operations. */ export declare class MongoAccessor implements AccessorInterface { readonly type = "mongo"; readonly client: MongoClient; protected _event: EventEmitter; get db(): mongodb.Db; private _logger; get logger(): LoggerInterface; setLogger(logger: LoggerInterface): void; constructor(client: MongoClient); emit(event: string | symbol, ...args: any[]): boolean; once(event: string | symbol, listener: (...args: any[]) => void): void; removeAllListeners(event?: string | symbol): void; on(event: string | symbol, listener: (...args: any[]) => void): void; off(event: string | symbol, listener: (...args: any[]) => void): void; close(): Promise<void>; execute(params: Params): Promise<ReadResult | UpdateResult | AddResult | RemoveResult | CountResult | CreateIndexResult | DropIndexResult | ListIndexesResult | never>; /** * Query a single document, mainly used for data queries in `access rules` */ get(collection: string, query: Filter<any>): Promise<any>; /** * Emit result event * @param params * @param data */ protected emitResult(params: Params, result: any): void; /** * Execute read query * @param collection collection name * @param params query params * @returns */ protected read(collection: string, params: Params): Promise<ReadResult>; /** * Execute aggregate query * @param collection * @param params * @returns */ protected aggregate(collection: string, params: Params): Promise<ReadResult>; /** * Execute update query * @param collection Collection name * @param params * @returns */ protected update(collection: string, params: Params): Promise<UpdateResult>; /** * Execute insert query * @param collection Collection name * @param params * @returns */ protected add(collection: string, params: Params): Promise<AddResult>; /** * Execute remove query * @param collection 集合名 * @param params 请求参数 * @returns 执行结果 */ protected remove(collection: string, params: Params): Promise<RemoveResult>; /** * Execute count query * @param collection collection name * @param params query params * @returns */ protected count(collection: string, params: Params): Promise<CountResult>; /** * Convert order params to Mongodb's order format * @param order * @returns */ protected processOrder(order: Order[]): (string | number)[][]; /** * Generate a hex string document id * @returns */ protected generateDocId(): string; /** * Serialize Bson to Extended JSON * @see https://docs.mongodb.com/manual/reference/mongodb-extended-json/ * @param bsonDoc * @returns */ protected serializeBson(bsonDoc: any): mongodb.BSON.Document; /** * Deserialize Extended JSOn to Bson * @see https://docs.mongodb.com/manual/reference/mongodb-extended-json/ * @param ejsonDoc * @returns */ protected deserializedEjson(ejsonDoc: any): any; /** * Convert aggregate stages params to Mongodb aggregate pipelines * @param stages * @returns */ protected processAggregateStages(stages: AggregateStage[]): { [x: string]: any; }[]; /** * Execute create index query * @param collection Collection name * @param params * @returns */ protected createIndex(collection: string, params: Params): Promise<CreateIndexResult>; /** * Execute drop index query * @param collection Collection name * @param params * @returns */ protected dropIndex(collection: string, params: Params): Promise<DropIndexResult>; /** * Execute list indexes query * @param collection Collection name * @param params * @returns */ protected listIndexes(collection: string, params: Params): Promise<ListIndexesResult>; } //# sourceMappingURL=mongo.d.ts.map