UNPKG

imsdk-server-core

Version:

轻量级Web服务器框架、WebSocket服务器框架。采用Typescript编写,简单易用。

197 lines (196 loc) 7.9 kB
/** * 对node-mongodb-native封装的类 * node-mongodb-native相关信息:http://mongodb.github.io/node-mongodb-native/ */ import { MongoClient, ObjectId } from 'mongodb'; import type { Db, MongoClientOptions, MongoClientCommonOption, DbCollectionOptions, CollectionInsertOneOptions, CollectionInsertManyOptions, FilterQuery, FindOneOptions, UpdateQuery, UpdateOneOptions, UpdateManyOptions, CommonOptions, MongoCountPreferences, FindOneAndUpdateOption, FindOneAndDeleteOption, CollectionAggregationOptions, Collection, SessionOptions, TransactionOptions, WithTransactionCallback } from 'mongodb'; import type { EnvContext } from './EnvContext'; export interface MongoManConfig { url?: string; urlOptions?: MongoClientOptions; db?: string; dbOptions?: MongoClientCommonOption; } export declare class MongoMan { private _context; private _config; private _logger; private _client; private _db; /** * @param context 上下文包装类实例 * @param category 日志分类 * @param config 配置信息 */ constructor(context: EnvContext, category: string, config?: MongoManConfig); /** * 建立数据库连接 */ connect(): Promise<void>; /** * 关闭数据库连接 * @param force */ close(force?: boolean): Promise<void>; /** * 插入单条记录 * @param table * @param doc * @param insertOptions * @param tableOptions * @returns 当返回值<0:操作失败。当返回值>=0:操作成功的数量 */ insertOne<T>(table: string, doc: T, insertOptions?: CollectionInsertOneOptions, tableOptions?: DbCollectionOptions): Promise<number>; /** * 插入多条记录 * @param table * @param docs * @param insertOptions * @param tableOptions * @returns 当返回值<0:操作失败。当返回值>=0:操作成功的数量 */ insertMany<T>(table: string, docs: T[], insertOptions?: CollectionInsertManyOptions, tableOptions?: DbCollectionOptions): Promise<number>; /** * 查找单条记录 * @param table * @param query * @param findOptions * @param tableOptions * @returns 当返回值为null:操作失败。 */ findOne<T>(table: string, query: FilterQuery<T>, findOptions?: FindOneOptions<any>, tableOptions?: DbCollectionOptions): Promise<T>; /** * 查找多条记录 * @param table * @param query * @param join * @param findOptions * @param tableOptions * @returns 当返回值为null:操作失败。 */ findMany<T, Z>(table: string, query: FilterQuery<T>, join?: FindJoinOpions<Z>, findOptions?: FindOneOptions<any>, tableOptions?: DbCollectionOptions): Promise<T[]>; /** * 更新单条记录 * @param table * @param filter * @param update * @param updateOptions * @param tableOptions * @returns 当返回值<0:操作失败。当返回值>=0:操作成功的数量 */ updateOne<T>(table: string, filter: FilterQuery<T>, update: UpdateQuery<T>, updateOptions?: UpdateOneOptions, tableOptions?: DbCollectionOptions): Promise<number>; /** * 更新多条记录 * @param table * @param filter * @param update * @param updateOptions * @param tableOptions * @returns 当返回值<0:操作失败。当返回值>=0:操作成功的数量 */ updateMany<T>(table: string, filter: FilterQuery<T>, update: UpdateQuery<T>, updateOptions?: UpdateManyOptions, tableOptions?: DbCollectionOptions): Promise<number>; /** * 删除单条记录 * @param table * @param filter * @param deleteOptions * @param tableOptions * @returns 当返回值<0:操作失败。当返回值>=0:操作成功的数量 */ deleteOne<T>(table: string, filter: FilterQuery<T>, deleteOptions?: CommonOptions, tableOptions?: DbCollectionOptions): Promise<number>; /** * 删除多条记录 * @param table * @param filter * @param deleteOptions * @param tableOptions * @returns 当返回值<0:操作失败。当返回值>=0:操作成功的数量 */ deleteMany<T>(table: string, filter: FilterQuery<T>, deleteOptions?: CommonOptions, tableOptions?: DbCollectionOptions): Promise<number>; /** * 查询记录数量 * @param table * @param query * @param countOptions * @param tableOptions * @returns 当返回值<0:操作失败。当返回值>=0:操作成功的数量 */ countDocuments<T>(table: string, query?: FilterQuery<T>, countOptions?: MongoCountPreferences, tableOptions?: DbCollectionOptions): Promise<number>; /** * 这个是原子操作 * @param table * @param filter * @param update * @param findUpdateOptions * @param tableOptions * @returns 当返回值为null:操作失败。 */ findOneAndUpdate<T>(table: string, filter: FilterQuery<T>, update: UpdateQuery<T>, findUpdateOptions?: FindOneAndUpdateOption<T>, tableOptions?: DbCollectionOptions): Promise<T>; /** * 这个是原子操作 * @param table * @param filter * @param findDeleteOptions * @param tableOptions * @returns 当返回值为null:操作失败。 */ findOneAndDelete<T>(table: string, filter: FilterQuery<T>, findDeleteOptions?: FindOneAndDeleteOption<T>, tableOptions?: DbCollectionOptions): Promise<T>; /** * 聚合操作 * @param table * @param aggregatePipeline * @param aggregateOptions * @param tableOptions * @returns 当返回值为null:操作失败。 */ aggregate<T>(table: string, aggregatePipeline?: object[], aggregateOptions?: CollectionAggregationOptions, tableOptions?: DbCollectionOptions): Promise<T[]>; /** * 使用withTransaction函数来进行事务操作 * 官方解释:Use withTransaction to start a transaction, execute the callback, and commit (or abort on error) * Note: The callback for withTransaction MUST be async and/or return a Promise. * Important: You must pass the session to the operations * @param callback 未抛出异常则提交事务,抛出异常则回滚事务,务必将回调参数session传入数据库操作中 * @param sessionOptions * @param transactionOptions * @returns 当返回值为null:操作成功。当返回值为string:操作失败的描述。 */ withTransaction(callback: WithTransactionCallback, sessionOptions?: SessionOptions, transactionOptions?: TransactionOptions): Promise<string>; /** * 使用startTransaction、commitTransaction、abortTransaction函数来进行事务操作 * @param callback 未抛出异常则提交事务,抛出异常则回滚事务,务必将回调参数session传入数据库操作中 * @param sessionOptions * @param transactionOptions * @returns 当返回值为null:操作成功。当返回值为string:操作失败的描述。 */ handTransaction(callback: WithTransactionCallback, sessionOptions?: SessionOptions, transactionOptions?: TransactionOptions): Promise<string>; /** * 获取可操作的集合 * @param table * @param tableOptions */ collection(table: string, tableOptions?: DbCollectionOptions): Collection<any>; /** * 创建ObjectId */ createObjectId(): ObjectId; /** * 16进制转ObjectId * @param hexstr */ hexstr2ObjectId(hexstr: string): ObjectId; get context(): EnvContext; get client(): MongoClient; get db(): Db; } interface FindJoinOpions<Z> { fromField: string; toField: string; resField: string; table: string; onlyOne?: boolean; orExp?: boolean; query?: FilterQuery<Z>; findOptions?: FindOneOptions<any>; tableOptions?: DbCollectionOptions; } export {};