在插件中导入架构后调用“分页”时出错

Jos*_*con 3 mongoose typescript mongoose-plugins mongoose-schema

将插件添加到我的架构后,我在控制器中使用 paginate 时遇到问题,我的代码是用 TypeScript 2.1 编写的,我在 devdependencies 中安装了 @types/mongoose-paginate。

[ts] 严重性:“错误”消息:“类型“模型”上不存在“属性”分页“。”

我的控制器:

export function getAllArtists(req, res) {
Artist.paginate({}, { page: 3, limit: 10 }, function(err, result) {
    // ...
    // ...
});
Run Code Online (Sandbox Code Playgroud)

我的架构:

'use strict'
import {Document, model, Model, Schema} from 'mongoose';
import * as mongoosePaginate from 'mongoose-paginate';

interface IArtist extends Document {
    name: String;
    description: String;
    image: String;
}

const ArtistSchema: Schema = new Schema({
    name: String,
    description: String,
    image: String
});

ArtistSchema.plugin(mongoosePaginate);

export const ArtistModel: Model<IArtist> = model<IArtist>('Artist', ArtistSchema);
Run Code Online (Sandbox Code Playgroud)

谢谢,

Jos*_*con 7

解决方案是包含一个将 PaginateModel 扩展到我的架构的接口。

'use strict'

import { PaginateModel, Document, Schema, model } from 'mongoose';
import * as mongoosePaginate from 'mongoose-paginate';

interface IArtist extends Document {
    name: String;
    description: String;
    image: String;
}

const ArtistSchema: Schema = new Schema({
    name: String,
    description: String,
    image: String
});

ArtistSchema.plugin(mongoosePaginate);

interface ArtistModel<T extends Document> extends PaginateModel<T> {}

export const ArtistModel: ArtistModel<IArtist> = model<IArtist>('Artist', ArtistSchema);
Run Code Online (Sandbox Code Playgroud)

  • 我们是否应该在此处包含一个演员表,例如:`export const ArtistModel: ArtistModel&lt;IArtist&gt; = model&lt;IArtist&gt;('Artist', ArtistSchema) as ArtistModel&lt;IArtist&gt;;` (4认同)