Я знаю, что это нудный вопрос, но я пытаюсь выяснить, как обновить значение в документе с маршрута в железном маршрутизаторе. Я нашел место, которое мне нужно, чтобы поставить функцию, но я борюсь с кодом манго, необходимым для его работы.Как обновить значение doc от функции iron-router
Я пытаюсь увеличивать элемент вида каждый раз, когда нажимается ссылка, поэтому добавили следующий код к маршруту.
data: function() {
var project = projectDocs.findOne(this.params._id);
// need to increment views value by one
console.log(project.views);
projectDocs.update({id: project.id},
{$inc: {views: 1}}
);
console.log(project.views);
return project;
}
});
Значение по project.views возвращает правильное значение, но код для обновления значения выдает исключение в данный момент.
Я пробовал простую вещь project.views ++, которая увеличивает эту переменную внутри функции, но она никогда не попадает в базу данных (никаких сюрпризов там я не догадываюсь).
Может кто-нибудь указать мне в направлении, которое мне нужно, чтобы получить это значение до inc (и это даже подходящее место для этого?).
Спасибо.
Peter.
ОК, я нашел эту ссылку, которая привела меня часть пути http://books.google.com.au/books?id=uGUKiNkKRJ0C&pg=PA37&lpg=PA37&dq=Cannot+apply+$inc+modifier+to+non-number&source=bl&ots=h7qyOddRsf&sig=EWFw9kNLGHoFEUS-nTNsBStDRcQ&hl=en&sa=X&ei=cRGXUse0DNGciAfk6YHgCA&ved=0CFcQ6AEwBQ#v=onepage&q=Cannot%20apply%20%24inc%20modifier%20to%20non-number&f=false, который объясняет, что вы можете только вкл числовые значения (у меня было это как струны, кажется.
Теперь проблема заключается в том, что я, кажется, быть в бесконечном цикле.
функция теперь выглядит
this.route('projectPage', {
path: '/projects/:_id',
waitOn: function() {
return Meteor.subscribe('singleProject', this.params._id);
},
data: function() {
var project = projectDocs.findOne(this.params._id);
// need to increment views value by one
console.log("Views", project.views);
console.log("Project", project);
projectDocs.update(project._id,
{$inc: {views: 1}}
);
console.log(project.views);
return project;
}
});
Почему это будет зацикливание?
OK, изменил код, чтобы соответствовать тому, что вы здесь и исключение брошено в консоли «Исключение при имитации эффекта вызова„/ projectDocs/обновление“ Ошибка: не удается применить $ вкл модификатор не-числа \t ... r («Нельзя применять модификатор $ inc для не числа»); Далее следуют целая куча кода. –
Поле просмотра должно быть числом, это все исключение. Исправьте это, и обновление должно работать. – landland