Я хотел бы проверить, не существует ли значение внутри поля коллекции.
Я пробовал оба способа.После проверки, если она существует, это сработало нормально, насколько я могу судить:
if (Characters.findOne({name:name})) {
{throw new Meteor.Error('name exists');} };
Выдает ошибку, когда вы вводите имя, которое уже существует.
Теперьнаоборот я попытался
if ( Characters.find( { name: { $not: { $eq: name } } } ) ) {
{throw new Meteor.Error('name doesn't exist');}
};
Я ожидал, что ошибка выдаст, только если будет указано имя, которое не существует.Я прокомментировал первый код, конечно.Но он также выдавал ошибку, когда передавалось существующее имя.
Я пробовал много разных операторов, но результат всегда был одинаковым.
Редактировать
Я попробовал предложенный способ, и он работал нормально!
Случай: Имя действительно существует:
Meteor.methods({
'characters.start'(name) {
check(name, String);
if (Characters.findOne({name})) {
throw new Meteor.Error('name exists');
} else {
return Characters.insert({
name,
owner: Meteor.user().username,
ownerId: Meteor.userId(),
});
}
},
Случай: Имя нене существует:
Meteor.methods({
'characters.start'(name) {
check(name, String);
if (Characters.findOne({name})) {
return Characters.insert({
name,
owner: Meteor.user().username,
ownerId: Meteor.userId(),
});
} else {
throw new Meteor.Error('name exists');
}
},
Спасибо за помощь!