UNPKG

warehouse

Version:
67 lines (66 loc) 1.78 kB
import type Model from './model'; import type Schema from './schema'; import type BluebirdPromise from 'bluebird'; import type { NodeJSLikeCallback, Options } from './types'; declare abstract class Document<T> { abstract _model: Model<T>; _id: string; abstract _schema: Schema<T>; [key: string]: any; /** * Document constructor. * * @param {object} data */ constructor(data?: T); /** * Saves the document. * * @param {function} [callback] * @return {BluebirdPromise} */ save(callback?: NodeJSLikeCallback<any>): BluebirdPromise<any>; /** * Updates the document. * * @param {object} data * @param {function} [callback] * @return {BluebirdPromise} */ update(data: object, callback?: NodeJSLikeCallback<any>): BluebirdPromise<any>; /** * Replaces the document. * * @param {object} data * @param {function} [callback] * @return {BluebirdPromise} */ replace(data: T | Document<T>, callback?: NodeJSLikeCallback<any>): BluebirdPromise<any>; /** * Removes the document. * * @param {function} [callback] * @return {BluebirdPromise} */ remove(callback?: NodeJSLikeCallback<any>): BluebirdPromise<any>; /** * Returns a plain JavaScript object. * * @return {object} */ toObject(): T extends object ? T : never; /** * Returns a string representing the document. * * @return {String} */ toString(): string; /** * Populates document references. * * @param {String|Object} expr * @return {Document} */ populate(expr: string | string[] | Partial<Options>[] | Partial<Options>): Document<T>; } export default Document;