javascript - MongooseJS 奇怪的转换错误,路由名称错误

标签 javascript node.js mongodb express mongoose

我正在开发后端,并且我有这条路由,它应该只从数据库返回一个 ID 数组,以便稍后延迟加载。我的路线定义如下:

 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...]

但是我遇到了一个非常奇怪的错误:

Cast to ObjectId failed for value "list" at path "_id" for model "insiders" CastError: Cast to ObjectId failed for value "list" at path "_id" for model "insiders" at new CastError (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\error\cast.js:27:11) at ObjectId.cast (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\schema\objectid.js:158:13) at ObjectId.SchemaType.applySetters (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\schematype.js:724:12) at ObjectId.SchemaType._castForQuery (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\schematype.js:1113:15) at ObjectId.SchemaType.castForQuery (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\schematype.js:1103:15) at ObjectId.SchemaType.castForQueryWrapper (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\schematype.js:1082:15) at cast (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\cast.js:300:32) at 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) at model.Query.Query._findOne (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\query.js:1518:8) at process.nextTick (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\kareem\index.js:333:33) at _combinedTickCallback (internal/process/next_tick.js:131:7) at process._tickCallback (internal/process/next_tick.js:180:9)

我已经确认它实际上是泄漏到我的路由处理程序中的路由名称。 (即,我将 S&G 的路由更改为 /jerry,并且错误中的“list”被替换为“jerry”)

最佳答案

我认为问题出在你的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

关于javascript - MongooseJS 奇怪的转换错误,路由名称错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50707748/

相关文章:

php - 带有复选框的 POST

javascript - ELSE IF using 怎么写? : in javascript

javascript - node.js 回调中 'done' 和 'next' 之间的区别

javascript - Mongodb:将字段添加到嵌入文档中(无数组)

mongodb - 如何使用 mongo-template 对数据进行分组

javascript - 是否可以在 JS 中构造 HTML 以便不使用 document.write 插入 HTML 中?

javascript - 如何使用字符串键在 Ember 模板中查找关联数组/对象值

mongodb - AppSync 中的 S3Object GraphQL 类型与 Lambda 数据源?

javascript - 我无法启动我的 js Discord 机器人,出现错误消息

node.js - 我应该如何连接本地 mongoose 数据库并将其移动到 mongodb 云图集?