我试图在测验应用中为用户添加分数,但是我收到错误"未捕获的类型错误:无法读取属性'个人资料'未定义"代码" 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"
}
答案 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')
}
})
}