Pass a hardcoded value through mongoose schema

核能气质少年 提交于 2019-12-06 09:21:56

问题


I would like to post some hard coded values along with user input(variables) every time.
args: [{ type: mongoose.Schema.Types.Mixed, required: true }] >>in this array i would like to pass some hard coded values along with user input variables.

Well my data to be posted looks like this.

{"file": "**<user input>**","name":"<user input>", "className": "com.izac.Parser.IO", "args": ["-i", "{\"enrichedKafkaOptions\": {\"checkpointLocation\": \"**<hard coded path always remains the same>**", \"kafka.bootstrap.servers\": \"localhost:9092\", \"topic\": \"demoEnriched\"}, \"rejectedKafkaOptions\": {\"checkpointLocation\": \"/Users/vipulrajan/Desktop/checkpoints/DemoRejected\", \"kafka.bootstrap.servers\": \"localhost:9092\", \"topic\": \"demoRejected\"} }","-s", "{\"master\":\"local[*]\", \"appName\":\"app1\", \"config\":{\"jvm.memory\":\"4g\"} }"]};

This is my schema,

const mongoose = require('mongoose');


const livy_schema = mongoose.Schema({
    file: { type: String, required: true },
    name: { type: String, required: true },
    className: { type: String, required: true },
    args: [{ type: mongoose.Schema.Types.Mixed, required: true }] //here i have constants to pass on to 
});

const kafka_schema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: { type: String, required: true, unique: false },
    config: { type: mongoose.Schema.Types.Mixed, required: true } //here i have constants to pass on to 
});


const enrichedEventSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    projectId: { type: mongoose.Schema.Types.ObjectId, ref: 'Project', required: true },
    name: { type: String, required: true, unique: true },
    description: { type: String, required: false },
    type: { type: String, enum: ["Enriched"], required: true },
    format: { type: String, enum: ["JSON", "DELIMITED", "FixedWidth", "LOG"], required: true },
    kafka: [kafka_schema],
    livy: [livy_schema]  
});

Original question Asynchronous Programming in node js to pass constants/predefined mandatory values through mongoose model .

I'm kind of in dilemma, like should i pass this hardcodeded values in router.post() method(if its possible, how should i code?) or in schema? please guide me in right direction.


回答1:


Please excuse me if I am misunderstanding the question.

Since you are using mongoose schema you can have your field default be a function where you can initialize and add hardcoded values.

Something like this:

const livy_schema = mongoose.Schema({
      file: {
        type: String,
        required: true
      },
      name: {
        type: String,
        required: true
      },
      className: {
        type: String,
        required: true
      },
      args: [{
        type: mongoose.Schema.Types.Mixed,
        required: true,
        default: function() {
          return { data: 'hardcoded!', info: 'hardcoded!' }
        }
      }] //here i have constants to pass on to 
    });
)

if the schema is in the right context I assume you can easily replace those strings with values being passed or swap the default function.



来源:https://stackoverflow.com/questions/51871045/pass-a-hardcoded-value-through-mongoose-schema

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!