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 ');
}
CodePudding user response:
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")
