Генерация динамической html-формы в стеке MEAN

Я только начал изучать стек MEAN и должен генерировать динамические формы "на лету".

Требование состоит в том, чтобы импортировать документ (excel/csv/xml/xls и т.д.) и генерировать динамические формы, используя его, чтобы пользователь мог обновлять свои данные и снова экспортировать его в соответствующий файл.

Для этого я конвертирую документы в формат JSON и сохраняю данные JSON в базе данных MongoDB.

Пример: рассмотрим данные xlsx:

ID  Name       dob        Gender
1   user1      7-Dec-87   m
2   user2      8-Dec-87   f
3   user3      9-Dec-87   f
3   user4      4-Dec-87   m

И я преобразовываю это с помощью модуля xlsx-to-json в формат JSON и сохраняю его в Mongodb.

app.post('/myapp', function (req, res) {

    //console.log("===========" + req.file.path);

    converter({
        input: req.file.path,
        output: "output.json"
    }, function (err, result) {
        if (err) {
            console.error(err);
        } else {
            console.log(result);
            db.collection('test').insert(result, function (err, doc) {
                console.log(err);
                res.json(doc);
            });
        }
    });

});

Здесь я извлекаю данные из Mongodb & express.js

app.get('/myapp', function (req, res) {
    db.collection('test').find(function (err, docs) {
        console.log(docs);
        res.json(docs);
    });
});

app.get('/birthdaylist/:id', function (req, res) {
    var id = req.params.id;
    console.log(id);
    db.collection('test').findOne({_id: mongojs.ObjectId(id)}, function (err, doc) {
        console.log(JSON.stringify(doc));
        res.json(doc);
    });
});

и здесь вывод JSON:

[ 
  { dob: '7-Dec-87', ID: '1', Name: 'user1' },
  { dob: '8-Dec-87', ID: '2', Name: 'user2' },
  { dob: '9-Dec-87', ID: '3', Name: 'user3' },
  { dob: '4-Dec-87', ID: '4', Name: 'user4' } 
]

Итак, у меня мало запросов:

  • Это правильный подход, который я делаю для создания динамической формы из xlsx/csv..etc? Если да, то как я могу генерировать динамическую форму сверху JSON.

  • При поиске в google я обнаружил, что mongodb автоматически генерирует форму (https://github.com/GothAck/forms-mongoose) Это поможет, потому что могут быть огромные данные о файлах excel.

Любая помощь будет действительно оценена.

Ответ 1

Вам действительно нужно анализировать произвольную электронную таблицу и динамически извлекать схему, или вы знаете схему раньше времени? Если вы знаете схему, то пример создания формы Mongoose прост. Но убедитесь, что это действительно требование, потому что это сложно.

Вы никогда не станете на 100%, потому что электронные таблицы создаются пользователями, а пользователи делают странные вещи. Но вы можете сделать что-то, что работает большую часть времени.

Вам нужно что-то, что принимает объект JSON, и извлекает схему и помещает ее в формат схемы Mongoose.

Итак, вы хотите добавить интересный модуль в схему Mongoose. Я искал node-modules.com, и это получилось: https://github.com/Nijikokun/generate-schema

Ответ 2

Генерация формы не является тривиальной задачей. Возможно, вам захочется использовать библиотеку для этого. Вот несколько полезных советов:

http://schemaform.io/

https://github.com/jdorn/json-editor/

Кроме того, если вам нужна помощь в создании схемы JSON из JSON:

http://jsonschema.net/#/

и, конечно: http://json-schema.org/