неопределенная ссылка на WinMain@16
или аналогичную «необычную» main()
ссылку на точку входа (особенно для visual-studio ).
Вы возможно, пропустили, чтобы выбрать правильный тип проекта с вашей реальной IDE. IDE может захотеть связать, например. Проекты приложений Windows для такой функции точки входа (как указано в недостающей ссылке выше) вместо обычной int main(int argc, char** argv);
.
Если ваша среда IDE поддерживает Plain Console Projects , вы может захотеть выбрать этот тип проекта вместо проекта приложения Windows.
Здесь case1 и case2 обрабатываются более подробно из реальный мир проблема.
find
возвращает курсор, а не объект или массив. Чтобы получить доступ к объекту, вам нужно либо извлечь его из курсора
var skill = Skills.find(Session.get('selected_skill')).fetch()[0];
, либо получить его непосредственно с помощью findOne
:
var skill = Skills.findOne(Session.get('selected_skill'));
Тогда вы можете использовать его так же, как любой другой объект js:
console.log(skill.mana);
skill._cache = {cooldown: true};
& nbsp;
& nbsp;
Имейте в виду, что на стороне клиента методы сбора данных, такие как find
являются неблокирующими. Они возвращают все, что имеет Метеор в кеше, не обязательно то, что находится на стороне сервера db. Вот почему вы всегда должны использовать их в реактивном контексте или следить за тем, чтобы все данные были получены до их выполнения (не беспокойтесь о последнем, пока не начнете говорить с Meteor, начните с первого раза).
Также вам нужно иметь в виду, что из-за этого findOne
и find.fetch
могут возвращать null
/ пустой массив, даже если соответствующий элемент находится в db (но еще не кэширован). Если вы не принимаете это во внимание в своих реактивных функциях, вы столкнетесь с ошибками.
Template.article.slug = function() {
var article = Articles.findOne(current_article);
if(!article) return '';
return slugify(article.title);
};
Если бы мы не убежали от функции с if(!article)
, выражение article.title
вызвало бы ошибку при первом вычислении, так как article
не был бы определен (предполагая, что он ранее не был кеширован).
& nbsp;
& nbsp;
Если вы хотите обновить базу данных с клиентской стороны, вы можете изменить только один элемент за раз, и вы должны обратиться к элементу с помощью _id
. Это связано с соображениями безопасности. Ваша строка для этого была в порядке:
Skills.update(Session.get('selected_skill'), {$inc: {mana: 1}});
& nbsp;
& nbsp;
alert()
- это функция, которая возвращает / g0] undefined независимо от того, что вы его кормите.
alert(42); // -> undefined
Как правило, гораздо лучше отлаживать с console.log
, чем с alert
.