所以我正在使用 discord.js 和 MongoDB 創建一個訊息計數命令,但永遠不會創建“messageCount”值。我搜索了它并查看了檔案,但我找不到問題所在。
代碼:
訊息計數器.js 檔案:
const mongo = require("mongoose")
const schema = require("./schemas/rank/message-count-schema")
module.exports = client => {
client.on('messageCreate', async (message) => {
const { author } = message
const { id } = author
mongo.connect(
process.env.MONGO_URI,
{ keepAlive: true }
)
const dataQuery = await schema.findOne({ _id: id })
if (!dataQuery) {
const newSchem = schema(
{
_id: id
},
{
$setOnInsert: { messageCount: 1 }
},
{
$inc: { messageCount: 1 }
},
{
upsert: true
}
)
await newSchem.save()
}
else {
dataQuery.updateOne(
{
$inc: { messageCount: 1 }
},
{
upsert: true
}
)
}
})
}
訊息計數schema.js 檔案:
const mongoose = require('mongoose');
const messageCountSchema = new mongoose.Schema({
_id: {
type: String,
required: true
},
messageCount: {
type: Number,
required: true
}
})
module.exports = mongoose.model('message-count', messageCountSchema);
有人可以告訴我出了什么問題以及如何解決嗎?我不是要求用勺子喂,只是出了什么問題。

uj5u.com熱心網友回復:
僅當值設定為 true時才對操作$setOnInsert有效。它存在于這些方法中 => , , . 在這種情況下,當它不是操作時,不會運行,這就是您的資料沒有價值的原因。updateupsertupdateOne()updateManyfindAndModify()update$setOnInsertmessageCount
uj5u.com熱心網友回復:
就像 caladan 之前所說的那樣,.findbyId()如果您想使用_id,您還需要添加,您的訊息數是每個用戶還是每個公會?如果每個用戶您可以向您的架構添加一個 userID String 專案并使用
const member = await message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.author;
const dataQuery = await schema.findOne({ UserID: member.id })
const messagecount = dataQuery.messageCount;
console.log(messagecount)
如果每個公會,您可以在架構中添加 GildId 專案,并使用:
const dataQuery = await schema.findOne({ GuildId: message.guild.id })
const messagecount = dataQuery.messageCount;
console.log(messagecount)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/492051.html
標籤:javascript 数据库 mongodb 不和谐 不和谐.js
上一篇:大查詢中的非結構
