不和ボットを作成していますが、ユーザーのIDがデータベースにあるかどうかを確認し、ある場合はメッセージを返します。ユーザーがすでにデータベースにIDを持っている場合でも、新しいデータを作成している現在のコード:
let user = message.mentions.members.first() || bot.users.cache.get(args[0])
let userid = user.user.id
Data.findOne({
userID: userid,
serverID: message.guild.id,
name: user.user.username,
language: args[2],
email: args[1],
lb: "all",
}, (err, data) => {
if (err) return console.log(err);
if (!data) {
const newData = new Data({
name: user.user.tag,
language: args[2],
email: args[1],
userID: userid,
serverID: message.guild.id,
lb: "all"
})
newData.save().catch(err => console.log(err));
return message.channel.send("new data created")
} else {
if (data.userID === user.user.id) return message.reply("Already has his data.")
}
})
そして、これが私のマングーススキームコードです:
const mongoose = require("mongoose");
const dataSchema = mongoose.Schema({
name: String,
language: String,
email: String,
userID: String,
serverID: String,
lb: String,
usage: Number
})
module.exports = mongoose.model(`Data`, dataSchema)
これらすべての条件を使用する必要はありませんfindOne()
。1つの一意の識別子を使用する必要がありますuserID
。この場合はそうです。
これが、すべての条件が既存のユーザーデータの条件と同じでない限り、意図したとおりに機能しない理由です。
Data.findOne({
userID: userid
}, (err, data) => {
// do something
})
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加