【发布时间】:2018-05-03 19:17:22
【问题描述】:
我是流星 js 编程的新手,我的意图是从一种单选按钮形式收集输入,以便在集合 Answers 中获得多个答案。 现在的问题是,如果我单击提交按钮,我会在 Url 选项卡中看到答案 optvalue,但如果我在 Chrome 中打开控制台并输入 Answers.find().fetch(),则集合中没有项目。
我的项目视图是:
-project
--client
------main.js
------main.html
------main.css
--imports
---api
------answers.js
---ui
------body.js
------body.html
--server
------main.js
客户端/main.js
import '../imports/api/answers.js';
import '../imports/ui/body.js';
imports/api/answer.js
import { Mongo } from 'meteor/mongo';
Answers = new Mongo.Collection('answers');
Answers.allow({
insert(){return false;},
update(){return false;},
remove(){return false;},
});
Answers.deny({
insert(){return true;},
update(){return true;},
remove(){return true;},
});
imports/ui/body.html
<body>
<div class="container">
<header>
<h1>Questionnaire</h1>
</header>
{{> questionnaire}}
</div>
</body>
<template name="questionnaire">
<form>
{{#each questions}}
<fieldset>
<legend>{{qtitle}}</legend>
<p>{{qtext}}</p>
{{#each options}}
<p><input type="radio" name="{{this.optqgroup}}" value="{{this.optvalue}}" required> {{this.optxt}}</p>
{{/each}}
</fieldset>
<br>
{{/each}}
<input type="submit" value="Submit your answers">
</form>
</template>
imports/ui/body.js
import { Template } from 'meteor/templating';
import './body.html';
Template.questionnaire.events({
'submit form': function(event,template) {
questions.forEach(function(question) {
let selected = event.target[question.optgroup].value;
Meteor.call('insertAnswer', selected, (error)=> {
if(error){
console.log(error);
}
})
});
}
});
Template.body.helpers({
questions : [
{
qtitle: "1. Title Q1",
qtext: "Text Q1",
options:[
{optgroup:"q1",
optvalue: "q1_opt1",
opttxt: "Option 1"},
{optgroup:"q1",
optvalue: "q1_opt2",
opttxt: "Option 2"}]},
{
qtitle: "2. Title Q2",
qtext: "Text Q2",
options:[
{optgroup:"q2",
optvalue: "q2_opt1",
opttxt: "Option 1"},
{optgroup:"q2",
optvalue: "q2_opt2",
opttxt: "Option 2"},]}]});
服务器/main.js
import '../imports/api/answers.js';
Meteor.methods({
insertAnswer(selected){
Answers.insert({
selected:selected
});
}
});
你能帮我解决这个问题吗?
【问题讨论】:
-
(a) 您是否删除了
autopublish包,如果是,则 (b) 您的出版物和相应的订阅在哪里?
标签: javascript jquery meteor collections