无法在元素 {buffHave: []} 中创建字段“id”

问题描述 投票:0回答:1

我想将数据 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
    }
  }
);```
node.js mongodb mongoose mongoose-schema
1个回答
0
投票

在您的模式定义中,您已将 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
      }
    }
  }
);

© www.soinside.com 2019 - 2024. All rights reserved.