const mongoose = require('mongoose').set('debug', false) const Schema = mongoose.Schema; const tools = require('../tools/general'); const { ObjectID, ObjectId } = require('mongodb'); mongoose.Promise = global.Promise; mongoose.level = "F"; // Resolving error Unknown modifier: $pushAll mongoose.plugin(schema => { schema.options.usePushEach = true }); const MyElemSchema = new Schema({ _id: { type: ObjectId, default: function () { return new ObjectId(); }, }, idapp: { type: String, }, path: { type: String, }, type: { type: Number, }, img: { type: String, }, container: { type: String, }, container2: { type: String, }, container3: { type: String, }, align: { type: Number, }, vertalign: { type: Number, }, speed: { type: Number, }, parambool: { type: Boolean, }, span: { type: Boolean, }, parambool2: { type: Boolean, }, parambool3: { type: Boolean, }, number: { type: String, }, imgback: { type: String, }, ratio: { type: String, }, containerHtml: { type: String, }, size: { type: String, }, order: { type: Number, default: 0, }, height: { type: Number, }, heightimg: { type: String, }, widthimg: { type: String, }, width: { type: Number, }, link: { type: String, }, fit: { type: String, }, onlyif_logged: { type: Boolean, }, color: { type: String, }, colorsub: { type: String }, active: { type: Boolean, }, class: { type: String, }, class2: { type: String, }, class3: { type: String, }, class4: { type: String, }, anim: { name: { type: String}, clduration: { type: String}, cldelay: { type: String}, }, anim2: { name: { type: String}, clduration: { type: String}, cldelay: { type: String}, }, styleadd: { type: String, }, image: { type: String, }, listcards: [ { imagefile: { type: String, }, alt: { type: String, }, description: { type: String, }, style: { type: String, }, size: { type: String, }, color: { type: String }, content: { type: String }, colorsub: { type: String }, } ], list: [ { imagefile: { type: String }, order: { type: Number }, alt: { type: String }, description: { type: String } } ], }); MyElemSchema.pre('save', async function (next) { if (this.isNew) { this._id = new ObjectID(); } next(); }); MyElemSchema.statics.getFieldsForSearch = function () { return [{ field: 'title', type: tools.FieldType.string }, { field: 'content', type: tools.FieldType.string }] }; MyElemSchema.statics.executeQueryTable = function (idapp, params, user) { params.fieldsearch = this.getFieldsForSearch(); return tools.executeQueryTable(this, idapp, params, user); }; MyElemSchema.statics.findAllIdApp = async function (idapp) { const MyElem = this; const myfind = { idapp }; return await MyElem.find(myfind).sort({ order: 1 }); }; const MyElem = mongoose.model('MyElem', MyElemSchema); module.exports = { MyElem };