imsdk-server-core
Version:
轻量级Web服务器框架、WebSocket服务器框架。采用Typescript编写,简单易用。
197 lines (196 loc) • 7.9 kB
TypeScript
/**
* 对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 {};