我想检查集合的字段内的值是否不存在。
我尝试了两种方式。据我所知,一旦检查是否确实存在,就可以了:
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');
}
},
感谢您的帮助!
答案 0 :(得分:0)
您的查询将无法正常运行。始终会返回不匹配的名称。
检查是否存在不存在就是它的存在的逆过程:
if (Characters.findOne({name})) {
throw new Meteor.Error('name exists');
} else {
// It wasn't found, therefore it doesn't exist
// - so you can create it now
}
我希望这是有道理的:)