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

Posted

技术标签:

【中文标题】在插件中导入架构后调用“分页”时出错【英文标题】:Error calling 'paginate' after import schema within plugin 【发布时间】:2017-08-09 03:26:19 【问题描述】:

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

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

我的控制器:

export function getAllArtists(req, res) 
Artist.paginate(,  page: 3, limit: 10 , function(err, result) 
    // ...
    // ...
);

我的架构:

'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);

谢谢,

【问题讨论】:

【参考方案1】:

解决方案是包含一个接口,将 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);

【讨论】:

我们是否应该在此处加入演员表,例如:export const ArtistModel: ArtistModel&lt;IArtist&gt; = model&lt;IArtist&gt;('Artist', ArtistSchema) as ArtistModel&lt;IArtist&gt;; @AndreM 是的。你是对的,没有演员表。 TS 将拒绝运行。

以上是关于在插件中导入架构后调用“分页”时出错的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot整合mybatis使用pageHelper插件进行分页操作

django 的分页器Paginator ,从django中导入类

在 python 3.4 中导入 tensorflow 时出错“无法加载本机 TensorFlow 运行时”

MyBatisPlus 分页插件的用法和基于行锁的分布式锁方案分析

MyBatisPlus 分页插件的用法和基于行锁的分布式锁方案分析

并没有使用pagehelper进行分页查询,为啥还是调用了