Meteorã«ã¯æ§˜ã€…ãªä¾¿åˆ©ãƒ‘ッケージãŒã‚りã¾ã™ãŒã€ ãã®ä¸ã§ã‚‚ã†ã¾ã使ãˆã°ã ã„ã¶ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’çœã‘るパッケージを紹介ã—ã¾ã™ã€‚ autoformã¯ãƒ•ォームを生æˆã™ã‚‹ãŸã‚ã®ãƒ‘ッケージã§ã™ã€‚ MongoDBã®ã‚¹ã‚ーマを定義ã—ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã™ã‚‹simple-schema ã¨ã¨ã‚‚ã«ä½¿ã„ã¾ã™ã€‚ collection2ã¨ã‚‚使ãˆã¾ã™ã€‚ 今回ã¯simple-schemaã§èª¬æ˜Žã—ã¾ã™ã€‚
åˆã‚ã«ã€ãƒ‘ッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯ã€
meteor add aldeed:simple-schema aldeed:autoform check
ã§ã™ã€‚ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ç”¨ã®checkパッケージも入れã¾ã—ãŸã€‚
例ãˆã°ã€æ¯Žæ—¥ã®ä½“é‡ã‚’記録ã™ã‚‹ã‚¢ãƒ—リを想定ã—ã¾ã—ょã†ã€‚ コレクションã®å®šç¾©ã¯ã€
Records = new Mongo.Collection('Records');
ã¨ãªã‚Šã¾ã™ã€‚ã“れã®ã‚¹ã‚ーマを定義ã™ã‚‹ã«ã¯ã€
RecordSchema = new SimpleSchema({
date: {
type: Date
},
weight: {
type: Number
}
});
ã®ã‚ˆã†ã«ã—ã¾ã™ã€‚ã“ã®ä¾‹ã¯å˜ç´”ã§ã™ã®ã§ç›´æ„Ÿçš„ã¨æ€ã„ã¾ã™ãŒã€ã‚ˆã‚Šè©³ã—ãã¯simple-schemaã®ãƒ‰ã‚ュメントをå‚ç…§ãã ã•ã„。
ã•ã¦ã€ã“ã®ã‚¹ã‚ーマを使ã£ã¦ãƒ•ォームを作æˆã™ã‚‹ã«ã¯ã€
<template name="inputForm">
{{> quickForm id="inputForm" schema="RecordSchema" type="method" meteormethod="/records/insert"}}
</template>
ã¨ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€
ã“ã®ã‚ˆã†ãªæ„Ÿã˜ã§ãƒ•ォームãŒå®Œæˆã—ã¾ã—ãŸã€‚ã“ã®ãƒ•ォームã¯typeã«åˆã‚ã›ã¦é©åˆ‡ãªã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒä½¿ç”¨ã•れã¦ã„る上ã€å€¤ãŒå…¥åŠ›ã•れã¦ã„ãªã‹ã£ãŸã‚Šä¸é©åˆ‡ãªå ´åˆã¯ã‚¢ãƒ©ãƒ¼ãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ãれã¾ã™ã€‚
フォームãŒsubmitã•れãŸéš›ã«ã¯meteor methodsãŒå‘¼ã³å‡ºã•れã¾ã™ã€‚ã“ã®å®Ÿè£…ã¯ä¾‹ãˆã°ä¸‹è¨˜ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
Meteor.methods({
'/records/insert': function(doc) {
check(doc, RecordSchema);
Records.insert(doc);
}
});
ã“ã®check
ãŒé‡è¦ã§ã€ã“れãŒãªã„ã¨ä¸æ£ãªãƒ‡ãƒ¼ã‚¿ã‚’登録ã§ãã¦ã—ã¾ã„ã¾ã™ã€‚フォームã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚µã‚¤ãƒ‰ã ã‘ã®è©±ãªã®ã§ã€‚
ã“ã®check
ã™ã‚‰å†—é•·ã ã¨è€ƒãˆã‚‹æ–¹ã¯collection2を使ã£ã¦ã¿ã‚‹ã¨ã‚ˆã„ã§ã—ょã†ã€‚
autoformã®æœ€ã‚‚ç°¡å˜ãªç´¹ä»‹ã§ã—ãŸã€‚ã“れ以外ã«ã‚‚色々柔軟ãªä½¿ã„æ–¹ãŒã§ãã‚‹ã®ã§ã€ãŠã™ã™ã‚ã®ãƒ‘ッケージã§ã™ã€‚
最後ã«å…¨ä½“ã®ã‚³ãƒ¼ãƒ‰ã‚’載ã›ã¦ãŠãã¾ã™ã€‚ã“れã ã‘ã§ã™ã®ã§ã€ã¾ãšã¯è©¦ã—ã¦ã¿ã‚‹ã¨ã‚ˆã„ã§ã—ょã†ã€‚
HTMLファイル
<body>
{{> inputForm}}
</body>
<template name="inputForm">
{{> quickForm id="inputForm" schema="RecordSchema" type="method" meteormethod="/records/insert"}}
</template>
JavaScriptファイル
Records = new Mongo.Collection('Records');
RecordSchema = new SimpleSchema({
date: {
type: Date
},
weight: {
type: Number
}
});
Meteor.methods({
'/records/insert': function(doc) {
check(doc, RecordSchema);
Records.insert(doc);
}
});