我正在编写一个机器人,它能够从我拥有的.json文件中随机 Select 一张卡,并应该将其添加到用户的卡 list 中.每一张卡都有自己的唯一代码.如果用户之前有这张卡,它将在数量上加1.否则,它应该在卡片数组下创建一个随机卡片的数据.
因此,我try 首先从用户的库存中搜索代码,然后如果它不存在,则填充它.
然而,即使没有返回错误,每次我使用该命令获取卡时,MongoDB上的数组仍然是空的.
const { idolname, group, era, rarity, code, image, qty } = cards ?? {};
const newCard = { "cards.code": `${code}` };
const updateInv = { $inc: { "cards.$.qty": 1 }};
let searchInv = await UserProfile.findOne({newCard});
if (!searchInv) {
UserProfile.updateOne({ $push: { "cards": { "cards.$.idolname": `${idolname}`, "cards.$.era": `${era}`, "cards.$.groupp": `${group}`, "cards.$.rarity": `${rarity}`, "cards.$.code": `${code}`, "cards.$.qty": '1'}}});
} else {
UserProfile.updateOne(newCard, updateInv);
}
以下是架构的设置方式
const { time } = require('discord.js');
const { Schema, model } = require('mongoose');
const userProfileSchema = new Schema({
userName: {
type: String,
},
userId: {
type: String,
required: true,
},
balance: {
type: Number,
default: 0,
},
lastDailyCollected: {
type: Date,
},
lastDrop: {
type: Date,
},
cards: [ {
idolname: String,
group: String,
era: String,
rarity: Number,
code: String,
image: String,
qty: Number,
}],
},
{ timestamps: true }
);
module.exports = model('UserProfile', userProfileSchema);
我不确定是不是因为我试图添加随机卡的名字,把事情搞得一团糟--因为我不仅仅是在推动一个设定值.
或者,问题可能是卡数据库位于本地.json上,而不是上传到MongoDB中?
请帮帮我,我太糊涂了,请给我指个方向.
我对编程非常陌生,并试图寻找解决方案,但似乎两者都无法实现.