sql >> Databáze >  >> NoSQL >> MongoDB

CastError:Odeslání do ObjectId selhalo pro hodnotu název-routy v cestě _id pro model

Pořadí middlewarů ve vašem sysaccess.js router je špatný.

Například:

// "GET /sysaccess/test" will be processed by this middleware
router.get('/:id', (req, res) => {
  let id = req.params.id; // id = "test"
  Foo.findById(id).exec().then(() => {}); // This line will throw an error because "test" is not a valid "ObjectId"
});

router.get('/test', (req, res) => {
  // ...
});

Řešení 1: aby tyto specifičtější middleware předcházely těm obecnějším.

Například:

router.get('/test', (req, res) => {
  // ...
});

router.get('/:id', (req, res) => {
  // ...
});

Řešení 2: použijte next předat požadavek dalšímu middlewaru

Například:

router.get('/:id', (req, res, next) => {
  let id = req.params.id;

  if (id === 'test') { // This is "GET /sysaccess/test"
    return next(); // Pass this request to the next matched middleware
  }

  // ...
});

router.get('/test', (req, res) => {
  // ...
});



  1. Neplatný operátor '$size' v agregaci

  2. Pokus o spuštění redis a resque plánovače v rámci úlohy rake

  3. Mongoose + lodash nesprávně rozšiřují kopírování pole objektu

  4. Loopback – ZÍSKEJTE model pomocí vlastního String ID z MongoDB