MongooseJS Ошибка нечетного приведения с именем маршрута в ошибке - PullRequest
0 голосов
/ 05 июня 2018

Я работаю над бэкэндом, и у меня есть этот маршрут, который должен возвращать только массив идентификаторов из базы данных для последующей отложенной загрузки.Мой маршрут определен так:

 router.get('/list', (req, res) => {
   Insider.find({}, {_id}).then(insiders => {
     if (!insiders) {
       res.status(400).json({ error: 'unable to find list of insiders' });
     }
     res.json(insiders);
   }).catch(err => res.status(400).json(err));
 });

, который должен возвращать массив, подобный этому [_id, _id, _id....]

Но я получаю очень странную ошибку:

Не удалось выполнить приведение к ObjectId для значения «список» по пути «_id» для инсайдеров модели\ Documents \ GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ error \ cast.js: 27: 11) в ObjectId.cast (C: \ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules\ mongoose \ lib \ schema \ objectid.js: 158: 13) в ObjectId.SchemaType.applySetters (C: \ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ schematype.js: 724: 12) в ObjectId.SchemaType._castForQuery (C: \ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ schematype.js: 1113: 15) в ObjectId.SchemaType.castForQuery (C:\ Users \ rutherfordc \ Documents \ GitHub \ к.х.н.-экспресс-монго \ node_modules \ мангуст \ Lib \ schematype.js: 1103: 15)в ObjectId.SchemaType.castForQueryWrapper (C: \ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ schematype.js: 1082: 15) при приведении (C: \ Users \ rutherfordc \ Documents \GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ cast.js: 300: 32) в model.Query.Query.cast (C: \ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \mongoose \ lib \ query.js: 3309: 12) at model.Query.Query._castConditions (C: \ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ query.js: 1293:10) в model.Query.Query._findOne (C: \ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ query.js: 1518: 8) в process.nextTick (C: \Пользователи \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \ kareem \ index.js: 333: 33) в _combinedTickCallback (внутренняя / process / next_tick.js: 131: 7) в process._tickCallback (внутренняя / process /)next_tick.js: 180: 9)

Я подтвердил, что на самом деле это имя маршрута просачивается в мой обработчик маршрута.(т.е. я изменил маршрут на /jerry для S & G, а «список» был заменен на «Джерри» в ошибке)

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Оказалось, что это была приоритетная проблема маршрута.до маршрута /list был /:insiderId маршрут.

извинения.

0 голосов
/ 05 июня 2018

Я думаю, что проблема в вашем find методе, попытайтесь изменить его следующим образом

 router.get('/list', (req, res) => {
 Insider.find({}, {id:0}).then(insiders => {
  if (!insiders) {
   res.status(400).json({ error: 'unable to find list of insiders' });
   }
     res.json(insiders);
  }).catch(err => res.status(400).json(err));
});

Я думаю, вы должны использовать id вместо _id и установить его значение в 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...