【问题标题】:Error in getting referenced objects in admin-bro Nodejs (There are no resources with given id)在 admin-bro Nodejs 中获取引用对象时出错(没有给定 id 的资源)
【发布时间】:2021-07-22 20:24:39
【问题描述】:

所以我得到的错误是没有给定 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,但它仍然显示相同的错误.

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

【问题讨论】:

    标签: node.js mongodb mongoose admin-bro


    【解决方案1】:

    有同样的问题。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-26
      相关资源
      最近更新 更多