这是我现有的架构,
const mongoose = require('mongoose');
const position = mongoose.Schema({
startIndex: { type: Number, required: true },
endIndex: { type: Number, required: false },
});
const Column = mongoose.Schema({
name: { type: String, required: true },
type: { type: String, enum: ["Description","ID","Time"], required: true },
positions: [position],
dataType: { type: String, enum: ["int", "float", "Double","String"], required: true },
oldName: {type:String, required: false }
});
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 },
DataSourceID: { type: String, required: false},
delimiter: { type: String, required: true },
format: {type:String, enum:["JSON","DELIMITED","FixedWidth","LOG"], required: true},
columns:[Column]
});
module.exports = mongoose.model('EnrichedEvent', enrichedEventSchema);
Api for Post route:
router.post("/:projectId/events/enriched", (req, res, next) => {
const enrichedEvent = new EnrichedEvent({
_id: mongoose.Types.ObjectId(),
name: req.body.name,
projectId: req.params.projectId, //taking from url
delimiter: req.body.delimiter,
format: req.body.format,
columns:req.body.columns,
});
return enrichedEvent.save()
.then(result => {
res.status(201).json({
message: "Event stored",
createdEvent: {
_id: result._id,
projectId: result.projectId,
name: result.name,
type: result.type,
delimiter: result.delimiter,
columns:result.columns,
format:result.format
}
});
})
.catch(err => {
console.log(err);
res.status(500).json({
error: err
});
});
});
我的要求是 所有 EnrichedEvents 应至少有 2 列,其中一列用
定义类型 = ID, 类型 = 时间。
if FORMAT = DELIMITED then data must have Delimiter Field; ALL Columns should have a mandatory Starting Index.
if FORMAT = FIXEDWIDTH then data must have all Columns should have mandatory Starting and Ending Index.
我能想到的就是使用 if 条件,像这样。
if ( req.body.format == 'DELIMITED' )
{
//then how to use my schema in my code??
}
我被困在这个问题上三天了,没有明白逻辑。任何帮助将不胜感激。
最佳答案
尝试制定两种不同的方案。
const positionDel = mongoose.Schema({
startIndex: { type: Number, required: true },
endIndex: { type: Number, required: false },
});
const positionFixed = mongoose.Schema({
startIndex: { type: Number, required: true },
endIndex: { type: Number, required: true},
});
关于javascript - 使用 Node js 中的 if 条件发布数据所需的逻辑(需要验证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51395940/