const mongoose = require('mongoose').set('debug', false); const Schema = mongoose.Schema; mongoose.Promise = global.Promise; mongoose.level = 'F'; const tools = require('../tools/general'); const {ObjectID} = require('mongodb'); // Resolving error Unknown modifier: $pushAll mongoose.plugin(schema => { schema.options.usePushEach = true; }); const MySkillSchema = new Schema({ _id: { type: Number, }, idapp: { type: String, required: true, }, userId: { type: Schema.Types.ObjectId, ref: 'User' }, idSkill: { type: Number, }, idStatusSkill: [{ type: Number, }], numLevel: { type: Number, }, note: { type: String, }, date_created: { type: Date, default: Date.now, }, date_updated: { type: Date, default: Date.now, }, }); MySkillSchema.pre('save', async function (next) { if (this.isNew) { const myrec = await MySkill.findOne().limit(1).sort({_id:-1}); if (!!myrec) { if (myrec._doc._id === 0) this._id = 1; else this._id = myrec._doc._id + 1; } else { this._id = 1; } this.date_created = new Date(); } next(); }); MySkillSchema.statics.findAllIdApp = function(idapp) { const query = [ { $match: { idapp } }, {$sort: {descr: 1}}, ]; return MySkill.aggregate(query).then((arrrec) => { return arrrec; }); }; MySkillSchema.statics.getFieldsForSearch = function() { return [{ field: 'idSkill', type: tools.FieldType.Number }] }; MySkillSchema.statics.executeQueryTable = function(idapp, params) { params.fieldsearch = this.getFieldsForSearch(); return tools.executeQueryTable(this, idapp, params); }; const MySkill = mongoose.model('MySkill', MySkillSchema); module.exports = {MySkill};