我有这样的代码
for (var i = 0; i < lootbox.length; i++) {
const { type } = lootbox[i]
const query = type + "_lootbox.hunt";
await lb.findOneAndUpdate(
{ userID: message.author.id },
{ $inc: { query: 1 } }
);
}
代码读取query
作为自己的变量而不是type + "_lootbox.hunt"
,是否有办法在$inc
内使用该查询?因为我想使用循环
自动执行它又名。动态对象键
这里的问题是,您正在尝试动态地创建一个对象,但是您不能动态地设置一个键。
要做到这一点,你需要在使用前准备好这个对象。
在这种情况下,你的代码应该是这样的,for (var i = 0; i < lootbox.length; i++) {
const { type } = lootbox[i]
const query = type + "_lootbox.hunt";
const tempObject = {}; // Creating an empty Object
tempObject[query] = 1; // Dynamic key usage
await lb.findOneAndUpdate(
{ userID: message.author.id },
{ $inc: tempObject } // Using the tempObject
);
}
据我所知,你想要的是:在每一次迭代中,query
变成type + "_lootbox.hunt"
,例如page1_lootbox.hunt
。你想得到的是{ $inc: { "page1_lootbox.hunt": 1 }}
。如果是这样,一个简单的解决方案就是
{ $inc: { [query]: 1 } } // { $inc: { "page1_lootbox.hunt": 1 } }
如果你想要不同的,请告诉我。