检查集合中的字段是否存在

时间:2019-06-16 00:54:46

标签: mongodb meteor

我想检查集合的字段内的值是否不存在。

我尝试了两种方式。据我所知,一旦检查是否确实存在,就可以了:

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');
  }
},

感谢您的帮助!

1 个答案:

答案 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
}

我希望这是有道理的:)