Wal*_*ruz 8 mongoose node.js mongoose-plugins nestjs
如何使用 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 });
Run Code Online (Sandbox Code Playgroud)
错误:第一个参数schema.plugin()必须是一个函数,得到“未定义”
San*_*air 15
这是针对那些使用带有 nestjs 的 mongoose -paginate插件的人的片段。您还可以安装@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);
Run Code Online (Sandbox Code Playgroud)
export interface Message extends Document {
// Your schema fields here
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
timestamp这是使用插件的示例
import { Schema } from 'mongoose';
import * as timestamp from 'mongoose-timestamp';
export const ConversationSchema = new Schema({
users: [String],
}).plugin(timestamp);
Run Code Online (Sandbox Code Playgroud)
尝试更换
import uniqueValidator from 'mongoose-unique-validator';
import mongoosePaginate from 'mongoose-paginate';
import mongoose_delete from 'mongoose-delete';
Run Code Online (Sandbox Code Playgroud)
经过
import * as uniqueValidator from 'mongoose-unique-validator';
import * as mongoosePaginate from 'mongoose-paginate';
import * as mongoose_delete from 'mongoose-delete';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5973 次 |
| 最近记录: |