Skip to content

Instantly share code, notes, and snippets.

@darshanan24
Created September 7, 2018 07:59
Show Gist options
  • Save darshanan24/2e8dfc273d7ddfc5c19bc45835ac6a7b to your computer and use it in GitHub Desktop.
Save darshanan24/2e8dfc273d7ddfc5c19bc45835ac6a7b to your computer and use it in GitHub Desktop.
If i donot post any array values when i am creating document collection, it should throw an error. like path to "columns" is required. bUt its not giving any error as such(only happening for array).
const mongoose = require('mongoose');
const EventTypes = ['Raw', 'Enriched', 'Joined']
const EventFormats = ["JSON", "DELIMITED", "FIXEDWIDTH", "REGEX"]
const ColumnDataTypes = ["int", "float", "Double", "string"]
const ColumnTypes = ["Description", "ID", "Time"]
var notEmpty = function(columns){
if(columns.length === 0){console.log("not empty");return false}
else {console.log("true not empty");return true};
}
const Columns = mongoose.Schema({
name: {
type: String,
required: true
},
type: {
type: String,
enum: ColumnTypes,
required: true
},
startIndex: {
type: Number,
required: true
},
endIndex: {
type: Number,
required: false
},
dataType: {
type: String,
enum: ColumnDataTypes,
required: true
},
oldName: {
type: String,
required: false
},
timeFormat: {
type: String,
required: false
}
});
const filters = mongoose.Schema({
columns: {
user_id: {
type: String,
required: true
},
product_value: {
type: String,
required: true
}
},
expressions: {
type: String,
required: true
}
})
const eventSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
projectId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Project',
required: true
},
type: {
type: String,
enum: EventTypes,
required: isEnriched
},
source: {
type: mongoose.Schema.Types.String,
ref: 'DataSource',
required: isRaw
},
parentId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Event',
required: isRaw
},
columns: [{
type: mongoose.Schema.ObjectId,
ref: Columns,
required: true, //isEnriched
validate: [notEmpty, 'Please add at least one feature in the features array']
}],
regex: {
type: String,
required: true
},
filters: {type:[filters], required:isEnriched} // not working
});
/* eventSchema.path('type').validate(fucntion(columns) {
if (!columns) {
return false
} else if (columns.length === 0) {
return false
}else (return true;)
}, ' random comment'); */
//Validations
//Check if event is Raw
function isRaw() {
if ((this.type) === 'Raw') {
console.log("inside raw");
return true;
}
console.log("outside raw");
return false;
}
//Check if event is Enriched
function isEnriched() {
if ((this.type) === 'Enriched') {
console.log("inside Enriched");
return true;
}
console.log("outside enriched")
return false;
}
module.exports = mongoose.model('Event', eventSchema);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment