在测验应用中评分(如何在测验应用中增加分数)

时间:2016-02-26 14:44:44

标签: javascript mongodb meteor meteor-accounts

我试图在测验应用中为用户添加分数,但是我收到错误"未捕获的类型错误:无法读取属性'个人资料'未定义"代码" var correctAns = account.profile.score;"。我正在使用AccountsUser包

Template.quiz.events({
        'click .next': function (evt,template) {
         //   countdown.start(function () {
                evt.preventDefault();
                Session.set("questionNumber", Session.get("questionNumber") + 1);
                var element = template.find('input:radio[name=k]:checked');
                // var inputValue = template.find('#myId').value;

                 console.log($(element).val());
                 var Id = this._id;
                 var account = Meteor.users.findOne({_id: Id});
                 var correctAns = account.profile.score;
                    console.log(correctAns);
                if (element == correctAns) {
                    Meteor.users.update({_id:Id}, {$inc:{'profile.score': 2}}, function(err){
                        if(err){
                            console.log(err);
                        } else {
                            console.log('updated')
                        }
                    })
                }

我的用户数据库如下:

{
"_id": "MNg6dJsWKyEETy5ej",
"profile": {
"firstname": "le",
"lastname": "me",
"phonenumber": "02929",
"user": "Staff",
"AccountStatus": "Activated",
"score": 0
},
"username": "11"
}

1 个答案:

答案 0 :(得分:0)

您需要update使用Meteor.userId()的用户,而不是测验ID。

Id现在是用户的ID,question_id是不言自明的。

Template.quiz.events({
    'click .next': function (evt,template) {
     //   countdown.start(function () {
            evt.preventDefault();
            Session.set("questionNumber", Session.get("questionNumber") + 1);
            var element = template.find('input:radio[name=k]:checked');
            // var inputValue = template.find('#myId').value;

             console.log($(element).val());
             var Id = Meteor.userId();
             var trys = $(element).val();
              // console.log(Id);
             var question_ID = this._id;
             var account = Questions.findOne({_id: question_ID});
             var correctAns = account.correctAns;
                console.log(correctAns);
                console.log(trys);
            if (trys == correctAns) {
                Meteor.users.update({_id:Id}, {$inc: {'profile.score': 2}},  function(err){
                    if(err){
                        console.log(err);
                    } else {
                        console.log('updated')
                    }
                })
            }