1

所以我得到的错误是没有给定 id 的资源:“workshop.timelines”\n这是您可以使用的所有注册资源的列表。

这是我试图在 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 尝试从集合中获取一些记录时,它失败并出现错误:

没有给定 ID 的资源:“workshop.timelines”\n这是您可以使用的所有已注册资源的列表。

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

非常感谢这里的任何帮助。

4

2 回答 2

0

有同样的问题。

基本上,数组ref中包含的模型中出现的任何模型也必须包含在内。resources

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

于 2021-08-17T01:12:51.040 回答
0

注释掉你是每个(type: mongoose.Schema.Types.ObjectId,)喜欢这个↓↓或者你也可以删除它。

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

它会正常工作。

这不起作用,因为默认情况下,Mongoose 会向您的模式添加一个属性,并且您正在显式定义它,因此需要在创建时显式插入它,但在 AdminBro Dashboard 中,您在创建任何新对象时_id没有那种添加选项。_id因此,出于这个原因,请评论每个_id生成字段。

于 2022-02-20T10:14:14.623 回答