const mongoose = require('mongoose').set('debug', false) const Schema = mongoose.Schema; const tools = require('../tools/general'); const { ObjectId } = require('mongodb'); const { IImg } = require('../models/myscheda'); mongoose.Promise = global.Promise; mongoose.level = "F"; // Resolving error Unknown modifier: $pushAll mongoose.plugin(schema => { schema.options.usePushEach = true }); const CatalogSchema = new Schema({ idapp: { type: String, }, active: { type: Boolean, default: false, }, title: { type: String, }, foto_collana: IImg, idCollane: [{ type: Number, }], argomenti: [{ type: String, }], editore: [{ type: String }], descr_introduttiva: { type: String, }, idPageAssigned: { type: String, }, idPageAssigned_stampa: { type: String, }, referenti: [{ type: String, }], img_bordata: IImg, img_intro: IImg, img_bordata_stampa: IImg, img_intro_stampa: IImg, pagina_introduttiva_sfondo_nero: { type: Boolean, }, pdf_generato: String, data_generato: { type: Date, }, pdf_online: String, data_online: { type: Date, }, date_created: { type: Date, default: Date.now }, date_updated: { type: Date, }, }); /* TOLTO ALTRIMENTI su /settable non mi crea l'ID CatalogSchema.pre('save', async function (next) { if (this.isNew) { this._id = new ObjectId(); } next(); }); */ CatalogSchema.statics.getFieldsForSearch = function () { return [{ field: 'title', type: tools.FieldType.string }] }; CatalogSchema.statics.executeQueryTable = function (idapp, params, user) { params.fieldsearch = this.getFieldsForSearch(); return tools.executeQueryTable(this, idapp, params, user); }; CatalogSchema.statics.findAllIdApp = async function (idapp) { const Catalog = this; const arrrec = await Catalog.aggregate([ // Filtra i documenti per idapp { $match: { idapp } }, // Ordina i risultati per titolo { $sort: { title: 1 } }, // Esegui il join con la collezione Collana { $lookup: { from: "collanas", // Nome della collezione Collana localField: "idCollane", // Campo in Catalog foreignField: "idCollana", // Campo in Collana as: "collana_info" // Nome del campo che conterrĂ  i risultati del join } }, ]); return arrrec; }; const Catalog = mongoose.model('Catalog', CatalogSchema); Catalog.createIndexes() .then(() => { }) .catch((err) => { throw err; }); module.exports = { Catalog };