рдЙрд▓реНрдХрд╛ рд░реВрдкрд░реЗрдЦрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрдХрдиреАрдХреЛрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╕рд┐рджреНрдз рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ - рдХреЛрдб рдХреЗ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реБрдП, рдСрдЯреЛрдкреНрд░рд┐рдХрдо / рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреИрдХреЗрдЬ, рдЬрдм рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рдлрд╝реАрд▓реНрдб рдЫрд┐рдкрд╛ рд░рд╣реЗ рд╣реЛрдВ рдФрд░ Meteor.users рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЕрдВрджрд░ рджреЗрдЦрдХрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЦрд╛рддрд╛ рдкреНрд░рдгрд╛рд▓реАред
рджреВрд╕рд░реЗ рдореЗрдВ - рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд▓реЙрдЧрд┐рдирдЯреЙрдХреЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╕рдордп / рдЗрдирдХрд╛рд░ рдирд┐рдпрдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреЛрдб, рд╕рд░реНрд╡рд░ рдХреЗ рддрд░реАрдХреЗ, HTTPS, рдмрд▓-рдПрд╕рдПрд╕рдПрд▓ рдкреИрдХреЗрдЬ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдкреЙрд▓рд┐рд╕реА рдкреИрдХреЗрдЬ (рд╕рд╛рдордЧреНрд░реА рдиреАрддрд┐ рдФрд░ рдПрдХреНрд╕-рдлрд╝реНрд░реЗрдо-рд╡рд┐рдХрд▓реНрдк)ред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рддрдВрддреНрд░ (рдЪреЗрдХ () рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдСрдбрд┐рдЯ-рджрд▓реАрд▓-рдЪреЗрдХ рдкреИрдХреЗрдЬ)ред
рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдЙрд▓реНрдХрд╛рдкрд┐рдВрдб рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ 0.7.0.1 рдХреЗ рд╕рд╛рде рдЙрд▓реНрдХрд╛рдкрд┐рдВрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡реИрд╕реЗ, рдпрджрд┐ рдЙрд▓реНрдХрд╛ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рддреЛ рдЙрд▓реНрдХрд╛рдкрд┐рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ --release рд╕реНрд╡рд┐рдЪ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЙрджрд╛рд╣рд░рдг рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
$ mrt --release 0.7.0.1
рдХреЛрдб рдХрд╛ рдкрд┐рдЫрд▓рд╛ рднрд╛рдЧ рдЫрд┐рдкрд╛рдирд╛
рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЪреАрдЬ рдХреЗ рд╕рд╛рде - рдХреЛрдб рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рднрд╛рдЧреЛрдВ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛ред рдпрджреНрдпрдкрд┐ рдЙрд▓реНрдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕реНрд╡рдпрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд┐рд╕рдХреА рдорд╛рддреНрд░рд╛ рдмрдврд╝рдиреЗ рдкрд░ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд╕реЗ рдЖрдк рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреЛрдб рдХреЛ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рд░реНрд╡рд░, рдХреНрд▓рд╛рдЗрдВрдЯ, рдХреНрд▓рд╛рдЗрдВрдЯ / рдЕрдиреБрдХреВрд▓рддрд╛, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ, рдирд┐рдЬреА, рджреЗрдпрддрд╛, рдкрд░реАрдХреНрд╖рдг (рдФрд░ рдореБрдЦреНрдпред * рдлрд╝рд╛рдЗрд▓реЗрдВ) рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:
docs.meteor.com/#structuringyourapp ред рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕реА рдкреНрд░рдХрд╛рд░, рдХреНрд▓рд╛рдЗрдВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдХреЛрдб рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреБрдЫ рдХреЛрдб, рдЬреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдШреЛрд╖рдгрд╛рдПрдБ, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдЖрд░рдХреНрд╖рд┐рдд рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рднреА рдирд╛рдо рдХреЗ рд╕рд╛рде рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЖрдк рдЗрд╕реЗ рдкрд░рд┐рд╡рд╛рдж рдореЗрдВ рднреА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдлрд╛рдЗрд▓реЗрдВ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИрдВ)ред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд╕рдВрдЧреНрд░рд╣ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦреЗрдВрдЧреЗред
рдЖрдЗрдП рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ:
$ mrt create littlesec
рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ:
$ cd littlesec $ rm littlesec.*
рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рд░реНрд╡рд░, рдХреНрд▓рд╛рдЗрдВрдЯ, рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдПрдБред рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рд╕рдВрдЧреНрд░рд╣ рдЬреЛрдбрд╝реЗрдВред рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЧреНрд░рд╣ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде:
Test = new Meteor.Collection('test');
рджрд░рдЕрд╕рд▓, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╣рд▓реЗ рд╣реА рд╢реБрд░реВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
$ mrt
рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВ:
рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ : 3000
рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдЦрд╛рд▓реА рдкреГрд╖реНрда рджреЗрдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЯреЗрд╕реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ, рднрд▓реЗ рд╣реА рдЦрд╛рд▓реА рд╣реЛ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдВрд╕реЛрд▓ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛:
> Test.find().count() 0
рдЧреНрд░рд╛рд╣рдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ home.html рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ:
<head> <title>littlesec</title> </head> <body> {{> home}} </body> <template name="home"> {{#each test}} <li> <ul>_id:'{{_id}}' name:'{{name}}' value:'{{value}}'</ul> </li> {{else}} <p>Collection Test is empty</p> {{/each}} </template>
рдФрд░ рдШрд░.рдЬреЗрдПрд╕:
Template.home.test = function() { return Test.find({}); }
рд╕рд░реНрд╡рд░ рдореЗрдВ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ - startup.js рдлрд╝рд╛рдЗрд▓:
Meteor.startup(function(){ if (!Test.find({}).count()) { var testValues = [ {name: 'First', value: 1}, {name: 'Second', value: 2}, {name: 'Third', value: 3} ]; testValues.forEach( function(testValue) { Test.insert(testValue); }); } });
рдЕрдм рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЧреНрд░рд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред _Id рдлрд╝реАрд▓реНрдб рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред
рдлрд┐рд▓рд╣рд╛рд▓, рд╕рдВрдЧреНрд░рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд┐рд╕реЗ рдХрдВрд╕реЛрд▓ рд╕реЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
> Test.findOne({})
рдФрд░:
> Test.insert({name: 'Fourth', value: 4})
рд╕реНрд╡рдд: рд╕рдВрдЧреНрд░рд╣ / рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреИрдХреЗрдЬ рдирд┐рдХрд╛рд▓реЗрдВ
рд╣рдореЗрдВ рдЙрд╕ рд╕рдВрдЧреНрд░рд╣ рддрдХ рдкреВрд░реА рдкрд╣реБрдБрдЪ рдорд┐рд▓реА, рдЬрд┐рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╣рдордиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реЗ рдСрдЯреЛрдкреНрд░рд┐рдЬрд╝рдо рдФрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдкрд╣рд▓реЗ рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ рдореМрдЬреВрдж рд╕рднреА рд╕рдВрдЧреНрд░рд╣ "рдкреНрд░рдХрд╛рд╢рд┐рдд" рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреВрд░рд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЙрд▓реНрдХрд╛ рдФрд░ рддреЗрдЬреА рд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП:
$ mrt remove autopublish $ mrt remove insecure
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЯреЗрд╕реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ:
> Test.find().count() 0
рдЕрдм, рддрд╛рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ, рдСрдЯреЛрдкреНрд░рд┐рдЬрд╝реНрдо рдХреЗ рдмрд┐рдирд╛, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рд╣реЛ, рд╕рд░реНрд╡рд░ рдХреЛ рдЗрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рд╣реЛрдЧреАред
рд╕рд░реНрд╡рд░ / рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк.рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдкреНрд░рдХрд╛рд╢рди рдЬреЛрдбрд╝реЗрдВ (рдЗрд╕реЗ Meteor.startup () рдФрд░ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдЬреЛрдбрд╝реЗ рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдЕрдВрддрд░ рддрдм рд╣реЛрдЧрд╛ рдЬрдм рдкреНрд░рдХрд╛рд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдЗрд╕ рд╕рдордп рддрдХ рдореМрдЬреВрдж рд╣реИ):
Meteor.publish('test', function() { return Test.find(); } );
рдпрджрд┐ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдСрдЯреЛрдкреНрд░реИрд╕рдо рдкреИрдХреЗрдЬ рдЕрднреА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА Meteor рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА:
I20140131-11:36:07.343(4)? ** You've set up some data subscriptions with Meteor.publish(), but I20140131-11:36:07.388(4)? ** you still have autopublish turned on. <..>
рдЧреНрд░рд╛рд╣рдХ / home.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдЪрд┐рдд рд╕рджрд╕реНрдпрддрд╛ рдЬреЛрдбрд╝реЗрдВ:
Meteor.subscribe('test');
рдЕрдм рдбреЗрдЯрд╛ рдлрд┐рд░ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ:
> Test.insert({name: 'Fifth', value: 5}) "BDgB258TovmqS7YbY" insert failed: Access denied
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реНрдерд╛рдиреАрдп рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ("BDgB258TovmqS7YbY") рдХреЛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд░рд┐рдХреЙрд░реНрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рджреЗрд░реА рдореБрдЖрд╡рдЬрд╛ рддрдВрддреНрд░ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐ рдЕрдиреБрдорддрд┐ / рдЗрдирдХрд╛рд░ рдирд┐рдпрдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ (рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж); рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рдмрд┐рдирд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдирд┐рд╖рд┐рджреНрдз рд╣реИрдВред
рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп рдлрд╝реАрд▓реНрдб рдЫрд┐рдкрд╛рдПрдБ
рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рдЕрдм рддрдХ, рд╕рд░реНрд╡рд░ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рднреА рдлрд╝реАрд▓реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк _id рдлрд╝реАрд▓реНрдб рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реАрдорд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░ рд╕реЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдХреЙрд░реНрдб рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдмрджрд▓рдиреЗ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рднреА рджреЗрдЦреЗрдВ), рдпрд╛ рдЕрдиреНрдп рдлрд╝реАрд▓реНрдб, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдЙрд▓реНрдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ):
Meteor.publish('test', function() { var projection = {_id: 0, value: 1}; return Test.find({}, {fields: projection} );
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, _id рдлрд╝реАрд▓реНрдб рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЫрд┐рдкрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╢рд╛рдпрдж, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░реНрд╡рд░ рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛, рдкрд╣рд▓реЗ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЦрд╛рд▓реА рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛ рдерд╛ред
рдмреЗрд╢рдХ, рдЦреЗрддреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдкрд░ рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ред
рдЙрд▓реНрдХрд╛ рдЦрд╛рддрд╛ рдкреНрд░рдгрд╛рд▓реА
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЕрдирдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХреГрдд рд╣реИ рддреЛ рдХреНрдпрд╛ рдЕрд╡рд╕рд░ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ?
рдЙрд▓реНрдХрд╛ рдЦрд╛рддрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдорд░реНрдерди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
$ mrt add accounts-base $ mrt add accounts-ui $ mrt add accounts-google
рдЕрдХрд╛рдЙрдВрдЯ-рдЧреВрдЧрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреИрдХреЗрдЬ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдлреЗрд╕рдмреБрдХ, рдЯреНрд╡рд┐рдЯрд░, рдЬреАрдердм рдФрд░ рдЕрдиреНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдкреИрдХреЗрдЬ рднреА рдЕрдиреНрдп рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Vkontakteред
рд╣рдо home.html рдореЗрдВ рддреИрдпрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдмрдЯрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
{{loginButtons}}
рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП currentUser:
{{currentUser._id}} {{currentUser.profile.name}}
рдФрд░, рдЪрд░рдг-рджрд░-рдЪрд░рдг рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдВрдЧреЗ, Google рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлреЗрд╕рдмреБрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝реЗрдВ:
$ mrt add accounts-facebook
рдлрд┐рд░ рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред
рдЦрд╛рддреЗ Meteor.users рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рдкрдВрдЬреАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ:
> Meteor.users.find().count() 1
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдпрджрд┐ рдСрдЯреЛрдкреНрд░реАрдХ рдкреИрдХреЗрдЬ рдЕрдХреНрд╖рдо рд╣реИ - рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ) рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдХреЗрд╡рд▓ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ:
> Meteor.users.findOne()) {"_id":"8fLXBYpNGLqDwAahg","profile":{"name":"< >"}}
рд╡рд╣реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ Meteor.user рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ Meteor.userId () рд╣реИ
> Meteor.user() {"_id":"8fLXBYpNGLqDwAahg","profile":{"name":"< >"}}
рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди (рд╕рд╣рд╛рдпрдХ) рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рдХрд░реЗрдВрдЯрдпреВрдЬрд╝рд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдЦрд╛рддрд╛-рдЖрдзрд╛рд░ рдкреИрдХреЗрдЬ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ Meteor.users рд╕рдВрдЧреНрд░рд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
Meteor.users = new Meteor.Collection("users", {_preventAutopublish: true});
рдФрд░ рдЗрд╕ рддрд░рд╣ рдкреНрд░рдХрд╛рд╢рд┐рдд:
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХреГрдд рд╣реИ, рддреЛ this.userId рдореЗрдВ рдЙрд╕рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рдмрдбреИрдХреНрдЬрд╝рд┐рдореЗрдВрдЯ рдбреЗрдЯрд╛рдмреЗрд╕, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдлрд╝реАрд▓реНрдб рдФрд░ рдИрдореЗрд▓ рд╕рдмрдбрдХреНрд▓реЗрдордореЗрдВрдЯ (рдЕрдВрддрд┐рдо рджреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рднрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВ) рд╕реЗ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдХреЛрдИ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдЦреЗрддреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХреЗрд╡рд▓ рдЙрд╕рдХрд╛ рдЕрдкрдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реА рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реИред
рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА Google рдЫрд╡рд┐ рдХрд╛ рд▓рд┐рдВрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рди рд╕реЗрд╡рд╛рдУрдВ.google.picture рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ services.facebook.id рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлреЗрд╕рдмреБрдХ рд╕реЗ рдЫрд╡рд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ (рд╕рд░реНрд╡рд░ / рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ)ред
Meteor.publish(null, function() { if (this.userId) { var projection = { 'services.google.picture': 1, 'services.facebook.id': 1, 'services.vk.photo': 1 }; return Meteor.users.find( { _id: this.userId }, { fields: projection } ); } else { return null; } });
рдФрд░ рдЪрд┐рддреНрд░ рдХрд╛ рд▓рд┐рдВрдХ home.html рдореЗрдВ рд╣реИ:
{{#if currentUser.services.facebook}} <img src="http://graph.facebook.com/{{currentUser.services.facebook.id}}/picture/?type=square"> {{else}}{{#if currentUser.services.google}} <img src={{currentUser.services.google.picture}}> {{else}}{{#if currentUser.services.vk}} <img src={{currentUser.services.vk.photo}}> {{/if}}{{/if}}{{/if}}
рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░ рдЕрдм рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
> Meteor.users.findOne() { "_id":"8fLXBYpNGLqDwAahg", "profile": { "name":"< >" }, "services": { "facebook": { "id": "< Facebook>" } } }
рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдкреНрд░рдХреНрд╖реЗрдкрдг = {} рдпрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЙрдк-рд╕реЗрдЯрдореЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг = {рд╕реЗрд╡рд╛рдПрдВ: 1} рд╕реЗрдЯ рдХрд░рдХреЗ рд╕рдВрдкреВрд░реНрдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ рдХрд┐ рдПрдХреНрд╕реЗрд╕рдЯреЛрдХрди рдпрд╛ рд▓реЙрдЧрд┐рдирдЯреЛрдХрдиред
рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореМрдЬреВрджрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдФрд░ рдЬреЛрдбрд╝рдирд╛:
Meteor.publish(null, function() { var projection = { 'profile.name': 1 }; return Meteor.users.find( { }, { fields: projection } ); });
рдкрд░рд┐рдгрд╛рдо рд╕рднреА рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХрд╛ рдПрдХреАрдХрд░рдг рд╣реЛрдЧрд╛, рдФрд░ рдЕрдм рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЬрд┐рдирдореЗрдВ рдЕрдирдзрд┐рдХреГрдд рд╡рд╛рд▓реЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд╕рднреА рдкрдВрдЬреАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдирд╛рдо рджреЗрдЦреЗрдВрдЧреЗ, рдФрд░ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрд▓реНрдб рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:
Meteor.users.find().fetch() [ { "_id":"8fLXBYpNGLqDwAahg", "profile": { "name":"< >" } }, { "_id":"kL7Fkuk29ci4vz8q4", "profile": { "name":"< >" }, "services": { "google":{ "picture":"< >" } } } ]