我想制作一个游戏数独的对象模型。所以我不确定如何处理嵌套数据。
Meteor.methods({
inputDatabase : function(options){
check(options,{
a1: {value:Number, display:String},
....
....
a9: {value:Number, display:String}
});
if(options.a1.value.length ===0 && options.a1.value.length >= 2){
throw new Meteor.Error(413, "Please input a single digit number.")
}
if(options.a1.display.length ===0){
throw new Meteor.Error(413, "Please choose show/hide.")
}
////////////在这里运行代码a1直到a9 //////////////
Database.insert({
a1: {value:options.a1.value, display:options.a1.display}, ///start form a1 - a9
...
...
...
a9: {value:options.a9.value, display:options.a9.display}
});
});
答案 0 :(得分:0)
好的以下所有人我都经过测试并且运作良好。
clientMiniSudoku.js
var arrangeOptions = function(inA1,cbA1,inA2,cbA2,inA3,cbA3,inA4,cbA4,inA5,cbA5,inA6,cbA6,inA7,cbA7,inA8,cbA8,inA9,cbA9) {
var inA1 = $("#inA1").val(),inA2 = $("#inA2").val(),inA3 = $("#inA3").val(),inA4 = $("#inA4").val(),inA5 = $("#inA5").val(),inA6 = $("#inA6").val(),inA7 = $("#inA7").val(),inA8 = $("#inA8").val(),inA9 = $("#inA9").val();
var cbA1 = $("#cbA1:checked").val(), cbA2 = $("#cbA2:checked").val(), cbA3 = $("#cbA3:checked").val(), cbA4 = $("#cbA4:checked").val(), cbA5 = $("#cbA5:checked").val(), cbA6 = $("#cbA6:checked").val(), cbA7 = $("#cbA7:checked").val(), cbA8 = $("#cbA8:checked").val(), cbA9 = $("#cbA9:checked").val();
if(!_.isEmpty(inA1) && !_.isEmpty(inA2) && !_.isEmpty(inA3) && !_.isEmpty(inA4) && !_.isEmpty(inA5) && !_.isEmpty(inA6) && !_.isEmpty(inA7) && !_.isEmpty(inA8) && !_.isEmpty(inA9)){
var resultObject = {a1:{value: inA1, checkbox: cbA1},
a2:{value: inA2, checkbox: cbA2},
a3:{value: inA3, checkbox: cbA3},
a4:{value: inA4, checkbox: cbA4},
a5:{value: inA5, checkbox: cbA5},
a6:{value: inA6, checkbox: cbA6},
a7:{value: inA7, checkbox: cbA7},
a8:{value: inA8, checkbox: cbA8},
a9:{value: inA9, checkbox: cbA9}
};
return resultObject;
}else {
return "Please input numbers in any field.";
}
}
Template.miniSudoku.helpers({
showData: function(){
},
errorInput: function(){
return Session.get("Error");
}
});
Template.miniSudoku.events({
'click #inputData': function(event){
event.preventDefault();
Session.set("options", arrangeOptions());
var options = Session.get("options");
if(Meteor.userId() && !_.isEmpty(options)){
if(_.isObject(options)){
Meteor.call('inputDatabase',options, function(){
Session.set("Error", "Data was inserted.");
$("#inA1").val("");
$("#cbA1").prop('checked', false);
$("#inA2").val("");
$("#cbA2").prop('checked', false);
$("#inA3").val("");
$("#cbA3").prop('checked', false);
$("#inA4").val("");
$("#cbA4").prop('checked', false);
$("#inA5").val("");
$("#cbA5").prop('checked', false);
$("#inA6").val("");
$("#cbA6").prop('checked', false);
$("#inA7").val("");
$("#cbA7").prop('checked', false);
$("#inA8").val("");
$("#cbA8").prop('checked', false);
$("#inA9").val("");
$("#cbA9").prop('checked', false);
});
}else{
Session.set("Error", "Data error.");
console.log(options);
}
}else{
Session.set("Error", "Please login before input.")
}
}
});
model.js
MiniSudoku = new Meteor.Collection(" MiniSudoku");
Meteor.methods ({
inputDatabase : function(options){
MiniSudoku.insert({
a1: {value: options.a1.value, checkbox: options.a1.checkbox},
a2: {value: options.a2.value, checkbox: options.a2.checkbox},
a3: {value: options.a3.value, checkbox: options.a3.checkbox},
a4: {value: options.a4.value, checkbox: options.a4.checkbox},
a5: {value: options.a5.value, checkbox: options.a5.checkbox},
a6: {value: options.a6.value, checkbox: options.a6.checkbox},
a7: {value: options.a7.value, checkbox: options.a7.checkbox},
a8: {value: options.a8.value, checkbox: options.a8.checkbox},
a9: {value: options.a9.value, checkbox: options.a9.checkbox}
});
}
});