2014-07-16 3 views
0

게임 스도쿠를 만들기 위해 이와 같은 오브젝트 모델을 만드는 것이 좋다고 생각합니다. 그래서 중첩 된 데이터로하는 방법을 모르겠습니다.Meteor.js에서 중첩 된 객체를 삽입하는 방법은 무엇입니까?

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.") 
        } 

//////////// 여기에 코드를 실행이 아래 틸 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

기본적으로 json을 이해하면 js와 mongodb를 이해할 수 있습니다. 흠, 나는 아직도 당신이 정말로 원하는 것을 얻지 못합니까? 귀하의 코드가 맞기 때문에 – yozawiratama

+0

정확히 어떤 문제가 있습니까? 기본적으로 이것이 작동해야하기 때문에. 이미'check'로이 객체의 유효성을 검증했기 때문에'Collection.insert (options)'와 같은 질의를 작성할 수도 있습니다. – macrusher

+0

나는 플랫 데이터로 놀았었다. 이 방법에는 아무런 문제가 없습니다. 그러나 이것은 내가 테스트 한 아래의 중첩 된 데이터로 재생할 수있는 첫 번째 시간이며 작동하지 않는 것 같습니다. – user3773249

답변

0

모두 좋아 A1 나는 시험 받고 잘 작동했다.

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 = 새로운 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} 
     }); 
    } 
}); 
관련 문제