adminjs icon indicating copy to clipboard operation
adminjs copied to clipboard

[Bug]: mongodb with with resource NoResourceAdapterError: There are no adapters supporting one of the resource you provided

Open adventuretocode opened this issue 2 years ago • 0 comments

Contact Details

No response

What happened?

List what you are trying to do?

I added the code for mango admin.

Bug prevalence

not able to setup

AdminJS dependencies version

"@adminjs/express": "^5.1.0", "@adminjs/mongoose": "^3.0.3",
"adminjs": "^6.8.7",
"express": "~4.16.1", "express-formidable": "^1.2.0", "express-session": "^1.17.3",
"mongoose": "^7.0.3",

What browsers do you see the problem on?

No response

Relevant log output

adminjs/lib/backend/utils/resources-factory/resources-factory.js:99
        throw new NoResourceAdapterError(resourceObject);
              ^

NoResourceAdapterError: There are no adapters supporting one of the resource you provided

Relevant code that's giving you issues

const AdminJS = require('adminjs')
const AdminJSExpress = require('@adminjs/express')
const express = require('express')

// connectt resource with admin
const mongoose = require("mongoose");
const AdminJSMongoose = require("@adminjs/mongoose");
const { Product } = require("./models/Products.js");

AdminJS.registerAdapter({
  Resource: AdminJSMongoose.Resource,
  Database: AdminJSMongoose.Database,
})


const PORT = 5000

const startAdminJS = async () => {
  const app = express()

  const mongooseDB = await mongoose
    .connect(
      "mongodb+srv://URL?retryWrites=true&w=majority",
      {
        useNewUrlParser: true,
        useUnifiedTopology: true,
      }
    )
    .then(() => console.log("database connected"))
    .catch((err) => console.log(err));

  const ProductResourceOptions = {
    databases: [mongooseDB],
    resource: Product,
  };

  const adminOptions = {
    rootPath: "/admin",
    resources: [ProductResourceOptions],
  };

  const admin = new AdminJS(adminOptions);

  const adminRouter = AdminJSExpress.buildRouter(admin)
  app.use(admin.options.rootPath, adminRouter)

  app.listen(PORT, () => {
    console.log(`runing port ${PORT}, Admin server  on URL: http://localhost:${PORT}${admin.options.rootPath}`)
  })
}

startAdminJS()

adventuretocode avatar Apr 15 '23 06:04 adventuretocode