2016-03-04 27 views
11

Właśnie zacząłem uczyć się na stosie MEAN i muszę generować dynamiczne formularze w locie.Dynamiczna generacja formularzy HTML w stosie MEAN

Wymagane jest zaimportowanie dokumentu (excel/csv/xml/xls itp.) I wygenerowanie dynamicznych formularzy z użyciem go, aby użytkownik mógł zaktualizować swoje dane i ponownie wyeksportować je do odpowiedniego pliku.

Aby to osiągnąć, konwertuję dokumenty do formatu JSON i przechowuję dane JSON w bazie danych MongoDB.

Ex: Rozważmy te dane 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 

A ja to za pomocą modułu konwersji do formatu JSON xlsx-to-json i przechowywanie go w 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); 
      }); 
     } 
    }); 

}); 

Oto ja ściągam powyżej danych z 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); 
    }); 
}); 

i tu jest wyjście 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' } 
] 

Tak, mam kilka pytań:

  • Czy th czy poprawne podejście robię, aby wygenerować dynamiczną formę z xlsx/csv..etc? Jeśli tak, to w jaki sposób mogę wygenerować dynamiczną formę z powyższego JSON.

  • Podczas zwiedzania na google znalazłem MongoDB generuje formularz automatycznie (https://github.com/GothAck/forms-mongoose) Więc to pomoże, ponieważ nie może być szansa ogromnych danych dotyczących plików Excel.

Każda pomoc będzie naprawdę doceniana.

+0

Powyższy kod wygląda dobrze na konwersję, szczególnie sprawdzanie wydajności wygląda dobrze. Bez próby kodu z przodu SO nie może ci pomóc. Link do github, który dołączasz, dotyczy Mongoose, więc jeśli nie używasz mangusty, to nie pomoże ci to zbytnio. – metame

+0

I tak jak mała uwaga na MongoDB, w rzeczywistości nie przechowujesz JSON w Mongo, ale [BSON] (http://bsonspec.org/). – metame

+0

@metame: Dzięki za odpowiedź. Próbowałem moogose, ale wymaga to odpowiednich atrybutów w formacie JSON. W moim przypadku JSON generuje z pliku Excel, więc jak mogę rozwiązać ten problem? – Sky

Odpowiedz

4

Czy rzeczywiście musisz przeanalizować dowolny arkusz kalkulacyjny i dynamicznie wyodrębnić schemat, czy znasz schemat z wyprzedzeniem? Jeśli znasz schemat, to przykład generowania formy mangusty jest prosty. Ale upewnij się, że jest to wymóg, ponieważ jest trudny.

Nigdy nie będziesz mieć 100%, ponieważ arkusze kalkulacyjne są tworzone przez użytkowników, a użytkownicy robią dziwne rzeczy. Ale możesz zrobić coś, co działa przez większość czasu.

Potrzebujesz czegoś, co bierze obiekt JSON i wyodrębnia schemat i umieszcza go w formacie schematu Mongoose.

Więc chcesz dodać ciekawy moduł do schematu Mongoose. Przeszukałem: node-modules.com i pojawiłem się: https://github.com/Nijikokun/generate-schema

+0

Tak, masz rację, arkusze kalkulacyjne są tworzone przez użytkowników i robią dziwne rzeczy, dlatego chcę je przekonwertować na format JSON – Sky

+0

Prawo, więc zobacz resztę odpowiedzi. Czy możesz sprawdzić, czy wygenerowany schemat lub inny z node-modules.com będzie działał, aby uzyskać schemat z JSON? –

+0

Tak. Sprawdzę i dam ci znać. Dzięki – Sky

3

Generowanie formularzy nie jest banalnym zadaniem. Możesz rozważyć użycie biblioteki do tego.Oto kilka, które mogą być przydatne dla Ciebie:

http://schemaform.io/

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

Ponadto, jeśli potrzebujesz pomocy generowanie schematu JSON z JSON:

http://jsonschema.net/#/

i oczywiście: http://json-schema.org/

+0

W tym celu muszę zdefiniować schemat generowania formularza HTML, ale w moim przypadku dane pochodzą z programu Excel (dynamicznie), które mogą być dowolne.Więc jak mogę zdefiniować schemat dla niego. Przykład: "[ {dob: 7-Dec-87 ', ID:' 1 ', Imię:' użytkownik1 '}, {dob:' 8-Dec-87 ', ID:' 2 ', Nazwa:' user2 '}, {dob:' 9-Dec-87 ', ID:' 3 ', Nazwa:' użytkownik3 '}, {dob:' 4-Dec-87 ', ID:' 4 ', Nazwa:' user4 '} ], [ {dob:' 7-Dec-87 ', ID:' 1 ', Imię:' użytkownik1 '}, {dob:' 8-Dec-87 ', ID:' 2 ', Imię i nazwisko: "user2"}, {dob: "9-Dec-87", ID: "3", Imię: "użytkownik3"}, {dob: "4-Dec-87", ID: "4", Name: 'user4'} ] ' – Sky

+0

Przekonwertowałeś plik Excel do JSON, więc wszystko, co musisz teraz zrobić, to przekonwertować swój JSON do schematu JSON (lub ręcznie utworzyć schemat JSON). To narzędzie powinno pomóc Ci zacząć: http://jsonschema.net/#/ – Trevor