Epicurious
Epicurious

Reputation: 67

How to just check if the mongodb .find returns something or not so true or false

How to find out if the .find returns something or not? I'm trying to make it so if it returns nothing, it saves a schema with an auth token (check 2), and if it returns something it does check 3. But everytime, even when I do not have a schema with my discordId in the database it logs check 3 and check 1 but never check 2.

let discordId = message.author.id;
const discordIdCheck = authSchema.find({
  discordId: discordId,
});
console.log('check 1');
if (discordIdCheck.count() < 1) {
  function getAuthToken() {
    var letters =
      '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!.#&';
    var authTokenStart = '';
    for (var i = 0; i < 12; i++) {
      authTokenStart += letters[Math.floor(Math.random() * letters.length)];
    }
    return authTokenStart;
  }

  const authToken = getAuthToken();

  const auth = {
    discordId: discordId,
    authToken: authToken,
  };
  console.log('check 2');
  message.author.send('Okay, your auth token is: ' + authToken);
  console.log(authToken);
  new authSchema(auth).save();
} else {
  message.channel.send(
    'You already have an auth token. use !token to make me send it to you in your direct messages',
  );
  console.log('Check 3 ');
}

Upvotes: 1

Views: 531

Answers (1)

Turtlepaw
Turtlepaw

Reputation: 583

You can use the length value to check the length of the find() result like:

const discordIdCheck = await authSchema.find({
  discordId: discordId,
});

if(discordIdCheck.length <= 0) console.log("0 found")

Upvotes: 1

Related Questions