如何使用nestjs实现mongoose插件?
import * as mongoose from 'mongoose';
import uniqueValidator from 'mongoose-unique-validator';
import mongoosePaginate from 'mongoose-paginate';
import mongoose_delete from 'mongoose-delete';
const UsuarioSchema = new mongoose.Schema({
username: {
type: String,
unique: true,
required: [true, 'El nombre de usuario es requerido']
},
password: {
type: String,
required: [true, 'La clave es requerida'],
select: false
}
});
UsuarioSchema.plugin(uniqueValidator, { message: '{PATH} debe ser único' });
UsuarioSchema.plugin(mongoosePaginate);
UsuarioSchema.plugin(mongoose_delete, { deletedAt : true, deletedBy : true, overrideMethods: true });错误:schema.plugin()的第一个参数必须是函数,得到“未定义”
发布于 2019-05-09 04:02:38
这是一个为那些使用mongoose-paginate插件和nestjs的人准备的代码片段。您还可以安装@types/mongoose-paginate以获得类型支持
用于将分页插件添加到架构的
import { Schema } from 'mongoose';
import * as mongoosePaginate from 'mongoose-paginate';
export const MessageSchema = new Schema({
// Your schema definitions here
});
// Register plugin with the schema
MessageSchema.plugin(mongoosePaginate);中
export interface Message extends Document {
// Your schema fields here
}import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { PaginateModel } from 'mongoose';
import { Message } from './interfaces/message.interface';
@Injectable()
export class MessagesService {
constructor(
// The 'PaginateModel' will provide the necessary pagination methods
@InjectModel('Message') private readonly messageModel: PaginateModel<Message>,
) {}
/**
* Find all messages in a channel
*
* @param {string} channelId
* @param {number} [page=1]
* @param {number} [limit=10]
* @returns
* @memberof MessagesService
*/
async findAllByChannelIdPaginated(channelId: string, page: number = 1, limit: number = 10) {
const options = {
populate: [
// Your foreign key fields to populate
],
page: Number(page),
limit: Number(limit),
};
// Get the data from database
return await this.messageModel.paginate({ channel: channelId }, options);
}
}发布于 2019-05-27 11:40:11
试试这个:
import * as mongoose from 'mongoose';
import * as uniqueValidator from 'mongoose-unique-validator';
import * as mongoosePaginate from 'mongoose-paginate';
import * as mongoose_delete from 'mongoose-delete';
const UsuarioSchema = new mongoose.Schema({
username: {
type: String,
unique: true,
required: [true, 'El nombre de usuario es requerido']
},
password: {
type: String,
required: [true, 'La clave es requerida'],
select: false
}
});
UsuarioSchema.plugin(uniqueValidator, { message: '{PATH} debe ser único' });
UsuarioSchema.plugin(mongoosePaginate);
UsuarioSchema.plugin(mongoose_delete, { deletedAt : true, deletedBy : true, overrideMethods: true });
export default UsuarioSchema;然后你可以像这样使用它:
import UsuarioSchema from './UsuarioSchema'发布于 2021-08-27 20:03:49
NestJS文档有更好的方法将插件添加到这两个模式中。
@Module({
imports: [
MongooseModule.forFeatureAsync([
{
name: Cat.name,
useFactory: () => {
const schema = CatsSchema;
schema.plugin(require('mongoose-autopopulate'));
return schema;
},
},
]),
],
})
export class AppModule {}或者如果是在全局级别。
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
@Module({
imports: [
MongooseModule.forRoot('mongodb://localhost/test', {
connectionFactory: (connection) => {
connection.plugin(require('mongoose-autopopulate'));
return connection;
}
}),
],
})
export class AppModule {}https://stackoverflow.com/questions/49387454
复制相似问题