在admin bro Nodejs中获取引用对象时出错(没有给定id的资源)



所以我得到的错误是没有给定id的资源:"研讨会。时间表";\这是您可以使用的所有注册资源的列表。

这是我试图在adminbro 中可视化的资源

const LearnerSchema = new mongoose.Schema(
  {
    workshops: [
      {
        workshop: {
          workshop_id: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'workshop',
          },
          code: {
            type: String,
          },
          timeline: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'workshop.timelines',
          },
        },
    ],
  { timestamps: true }
);

这是车间模型:

const WorkshopSchema = new mongoose.Schema(
  {
    name: {
      type: String,
      required: true,
    },
    description: {
      type: String,
    },
    timelines: [
      {
        group: {
          type: Number,
        },
        city: {
          type: mongoose.Schema.Types.ObjectId,
          ref: 'city',
        },
        description: {
          type: String,
        },
        venue: {
          type: mongoose.Schema.Types.ObjectId,
          ref: 'venue',
        },
        month: {
          type: String,
        },
        start: {
          type: Date,
        },
        end: {
          type: Date,
        },
        registration_start: {
          type: Date,
        },
        registration_end: {
          type: Date,
        },
        registrations: {
          type: Number,
          default: 0,
        },
        registrations_cancelled: {
          type: Number,
          default: 0,
        },
        d_reg: {
          type: Number,
          default: 0,
        },
        classLink: {
          type: String,
          default: '',
        },
        status: {
          type: String,
          default: 'E',
        },
        resources: {
          _id: false,
          videoSessions: { type: Boolean, default: false },
        },
      },
    ],
    status: {
      type: String,
      enum: ['NEW', 'F', 'DISABLED'], //f = FEATURED
      default: 'NEW',
    },
  },
  { timestamps: true }
);
WorkshopSchema.index({ name: 'text', description: 'text' });
module.exports = Workshop = mongoose.model('workshop', WorkshopSchema);

现在,我已经在adminbro选项中添加了这两种资源,但当adminbro试图从Collection中获取一些记录时,它失败了,并返回错误:

没有给定id为"的资源;研讨会。时间表";\这是您可以使用的所有注册资源的列表

可能影响这个问题的另一件事是,在MongoDB中,workshop对象中timeline的值是ObjectId和字符串的混合,但我尝试将所有对象值转换为ObjectId,但它仍然显示相同的错误。

非常感谢您的帮助。

也有同样的问题。

基本上,出现在resources阵列中包括的模型中的任何ref模型也必须包括在内。

在您的情况下,我建议您查看ResourceOptions(https://adminbro.com/ResourceOptions.html)查看是否可以包含嵌套属性

评论出你(type: mongoose.Schema.Types.ObjectId,(都喜欢这样↓↓或者你也可以删除它。

// type: mongoose.Schema.Types.ObjectId,

它会很好用的。

这是不起作用的,因为默认情况下,Mongoose会将_id属性添加到架构中,并且您正在显式定义它,因此需要在创建时显式插入它,但在AdminBro Dashboard中,您没有在创建任何新对象时添加_id的选项。因此,对每个_id生成字段进行注释。

最新更新