2017-02-10 14 views
0

Я новичок в Meteor и пытаюсь использовать SimpleSchema/Autoforms в приложении, которое я создаю. Когда пользователь создает группу, они заполняют имя группы, описание и местоположение (адрес). За кулисами они добавляются как первый член группы, и адрес скоро будет преобразован в значения lat/lng.Вложенные объекты с Meteor Simpleschema

Когда я пытаюсь сохранить это, location и members[0] - пустые объекты.

Схема:

Groups = new Mongo.Collection('groups'); 
Groups.attachSchema(new SimpleSchema({ 
groupName: { 
    type: String, 
    label: "Group Name", 
    max: 200 
}, 
createdBy: { 
    type: String, 
    autoform: { 
     omit: true 
    } 
}, 
members: { 
    type: [{ 
     _id: {type: String}, 
     firstName: {type: String}, 
     lastName: {type: String} 
    }], 
    label: "Group Members", 
    autoform: { 
     omit: true 
    } 
}, 
location: { 
    type: { 
     address: {type: String}, 
     lat: {type: String}, 
     lng: {type: String} 
    }, 
    label: "Location" 
}, 
description: { 
    type: String, 
    label: "Group Description", 
    max: 250, 
    optional: true 
} 
})); 

Вставка Форма:

Template.groupsList.events({ 
'submit form': function(e) { 
    console.log('submitting form..'); 
    e.preventDefault(); 

    var group = { 
     groupName: $(e.target).find('[name=groupName]').val(), 
     createdBy: Meteor.userId(), 
     members: [{ 
      _id: Meteor.userId(), 
      firstName: Meteor.user().profile.firstName, 
      lastName: Meteor.user().profile.lastName 
     }], 
     location: setLocation($(e.target).find('[name=location]').val()), 
     description: $(e.target).find('[name=description]').val() 
    }; 

    function setLocation(location) { 
     return { 
      location: location, 
      lat: 123, 
      lng: 123 
     }; 
    } 
    console.log(group); 
    var groupId = Groups.insert(group); 
    Router.go('/group/' + groupId); 
} 
}); 

Я видел некоторые подобные вопросы, размещенные в Stack Overflow об этом, но данные всегда кажется более затемненный от решаемой задачи. Мне что-то не хватает?

ответ

1

Вы хотите, чтобы гнездиться фактическую схему вместо простого объекта:

Groups = new Mongo.Collection('groups'); 

const memberTypes = new SimpleSchema({ 
    _id: {type: String}, 
    firstName: {type: String}, 
    lastName: {type: String} 
}); 
const locationType = new SimpleSchema({ 
    address: {type: String}, 
    lat: {type: String}, 
    lng: {type: String} 
}); 

Groups.attachSchema(new SimpleSchema({ 
    groupName: { 
    type: String, 
    label: "Group Name", 
    max: 200 
    }, 
    createdBy: { 
    type: String, 
    autoform: { 
     omit: true 
    } 
    }, 
    members: { 
    type: [memberTypes], 

    }], 
    label: "Group Members", 
    autoform: { 
     omit: true 
    } 
    }, 
    location: { 
    type: locationType, 
    label: "Location" 
    }, 
    description: { 
    type: String, 
    label: "Group Description", 
    max: 250, 
    optional: true 
    } 
}));