2015-04-24 2 views
2

Как мы можем создать схему из базы данных в приложении meteor. Я хочу создать несколько схем из каждой записи базы данных.Как создать простую схему из базы данных в meteor

БД используется Mongo DB.

Эта схема будет использоваться позже для создания формы.

Я использую autoform для создания формы.

[1: http://autoform.meteor.com]

+0

Этот ответ о том, как перепроектировать в MongoDB схемы может быть полезна: http://stackoverflow.com/questions/12386547/tool-to-create-a-visualization-from-existing-mongodb –

ответ

0
  1. MongoDB представляет собой базу данных документа, который не требует схемы. Все, что вам нужно сделать, это declare collections in Meteor
  2. Если вы хотите быть строгими о структуре документа, проверьте https://github.com/aldeed/meteor-collection2 (meteor add aldeed:collection2)

Я недавно объяснил коллекцию Метеора и схемы here.

Если вы хотите прочитать схему из коллекции, вы можете просто получить к ней доступ через collectionName.simpleSchema(). Для вашей цели вы можете принять эту схему и преобразовать ее в желаемую структуру (или исключить определенные сконфигурированные поля).

+0

I должны отображать все элементы объекта, может ли дать любой пример? – garima

+0

Вы говорите, что мне нужно отображать только коллекцию? – garima

+0

Ах понимаю. Увеличен ответ. Последний абзац должен указывать вам в правильном направлении. –

1

Я написал небольшой скрипт, который вы можете запустить в манго, чтобы перепроектировать существующую (плоскую) коллекцию.

/* 
** SimpleSchema definition generator 
** 
** This will reverse engineer a flat collection 
** only at this point. If you improve this, 
** please share: {"email-left": "timstew", "at":"@", "email-right": "gmail.com"} 
**        
*/ 
var schemaName = "publisherSchema"; // Name you want to give to your simple schema 
var collectionName = "publishers"; // mongodb collection name (not including 'db.') 
var sampleID = "54c00f0d2b21500370a2e4c4"; // _id of a good representative document 

// OK, that's all the info we need - Let's get started! 
var message = eval("db." + collectionName + ".findOne({_id:\"" + sampleID +"\"})"); 
var count = 0; 
// Hack because I can't figure out how to find out how many fields are in 
var numKeys = 0; 
for(var key in message) {numKeys += 1} 

var index = 0; 
for (var key in message) { 
    if (index == 0) { 
     print(schemaName + " = new SimpleSchema({"); 
     } 
    print("\t" + key + ": {"); 
    print("\t\ttype: " + toProper(eval("typeof db." + collectionName + ".findOne({_id:\"" + sampleID + "\"})." + key)) + ","); 
    print("\t\tlabel: \"" + toProper(key) + "\""); 

    if (index == numKeys-1) { 
     print("\t\t}"); 
     print("\t})"); 
    } else { 
     print("\t\t},"); 
    } 
    index += 1; 
} 

function toProper(str) 
{ 
    return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^