我想将数据 id 和持续时间推送到 buffhave,但出现错误“无法在元素 {buffHave: []} 中创建字段 'id'”
const { Schema, model } = require("mongoose");
const schema = new Schema({
userId: String,
buffHave: [{
id: {
type: [Number],
default: [-1]
},
duration: Date
}]
});
module.exports = model("user", schema);
await userData.updateOne(
{
userId: user.id
},
{
$push: {
"buffHave.id": buffId,
"buffHave.duration": buffs[buffId].duration
}
}
);```
在您的模式定义中,您已将 buffHave 定义为具有属性 id 和持续时间的对象数组。但是,您尝试将 buffId 和 buffs[buffId].duration 直接推送到 buffHave 中,这是无效的,因为 buffHave 是一个对象数组,而不仅仅是一个数组。
要解决此问题,您需要将具有 id 和uration 属性的对象推送到 buffHave 数组中。具体方法如下:
await userData.updateOne(
{
userId: user.id
},
{
$push: {
buffHave: {
id: buffId,
duration: buffs[buffId].duration
}
}
}
);