cleaner parsing
This commit is contained in:
parent
d8787a5d48
commit
c9cfa2c5f9
|
@ -4,6 +4,7 @@ const {
|
|||
getRecordParams,
|
||||
getModelParams,
|
||||
generateModelID,
|
||||
generateRecordID,
|
||||
} = require("../../db/utils")
|
||||
|
||||
exports.fetch = async function(ctx) {
|
||||
|
@ -83,7 +84,10 @@ exports.save = async function(ctx) {
|
|||
// Populate the table with records imported from CSV in a bulk update
|
||||
const data = await csvParser.transform(dataImport)
|
||||
|
||||
for (let row of data) row.modelId = modelToSave._id
|
||||
for (let row of data) {
|
||||
row._id = generateRecordID(modelToSave._id)
|
||||
row.modelId = modelToSave._id
|
||||
}
|
||||
|
||||
await db.bulkDocs(data)
|
||||
}
|
||||
|
|
|
@ -25,29 +25,20 @@ function parse(path, parsers) {
|
|||
}
|
||||
})
|
||||
result.fromFile(path).subscribe(row => {
|
||||
// For each CSV row
|
||||
// parse all the columns that need parsed
|
||||
// For each CSV row parse all the columns that need parsed
|
||||
for (let key in parsers) {
|
||||
// if the parsing has already failed for a column
|
||||
// skip that column
|
||||
if (
|
||||
!schema[key] ||
|
||||
!schema[key].success ||
|
||||
schema[key].type === "omit"
|
||||
) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (!schema[key] || schema[key].success) {
|
||||
// get the validator for the column type
|
||||
const validator = VALIDATORS[parsers[key].type]
|
||||
|
||||
try {
|
||||
// allow null/undefined values
|
||||
schema[key].success = !row[key] || !!validator(row[key])
|
||||
schema[key].success = !row[key] || validator(row[key])
|
||||
} catch (err) {
|
||||
schema[key].success = false
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
result.on("done", error => {
|
||||
if (error) {
|
||||
|
|
Loading…
Reference in New Issue