CastError:模型“ admin”的路径“ _id”处的值“ favicon.ico”的强制转换为ObjectId

时间:2020-11-12 07:38:03

标签: javascript node.js mongodb

更新我的node.js后出现此错误。我在路由器中收到此错误,如果我删除该路由器,该错误消失了 另外,如果我重新添加路由器,我不会收到错误 除非我重新启动系统或重新启动chrome。

D:\raghav\web\ecommerce\node_modules\mongoose\lib\query.js:4371
  const castError = new CastError();
                    ^

CastError: Cast to ObjectId failed for value "favicon.ico" at path "_id" for model "admin"
    at model.Query.exec (D:\raghav\web\ecommerce\node_modules\mongoose\lib\query.js:4371:21)
    at model.Query.Query.then (D:\raghav\web\ecommerce\node_modules\mongoose\lib\query.js:4463:15)
    at processTicksAndRejections (node:internal/process/task_queues:93:5)
    at runNextTicks (node:internal/process/task_queues:62:3)
    at processImmediate (node:internal/timers:435:9) {
  messageFormat: undefined,
  stringValue: '"favicon.ico"',
  kind: 'ObjectId',
  value: 'favicon.ico',
  path: '_id',
  reason: Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
      at new ObjectID (D:\raghav\web\ecommerce\node_modules\bson\lib\bson\objectid.js:59:11)
      at castObjectId (D:\raghav\web\ecommerce\node_modules\mongoose\lib\cast\objectid.js:25:12)
      at ObjectId.cast (D:\raghav\web\ecommerce\node_modules\mongoose\lib\schema\objectid.js:267:12)
      at ObjectId.SchemaType.applySetters (D:\raghav\web\ecommerce\node_modules\mongoose\lib\schematype.js:1072:12)
      at ObjectId.SchemaType._castForQuery (D:\raghav\web\ecommerce\node_modules\mongoose\lib\schematype.js:1507:15)
      at ObjectId.SchemaType.castForQuery (D:\raghav\web\ecommerce\node_modules\mongoose\lib\schematype.js:1497:15)
      at ObjectId.SchemaType.castForQueryWrapper (D:\raghav\web\ecommerce\node_modules\mongoose\lib\schematype.js:1474:20)
      at cast (D:\raghav\web\ecommerce\node_modules\mongoose\lib\cast.js:331:32)
      at model.Query.Query.cast (D:\raghav\web\ecommerce\node_modules\mongoose\lib\query.js:4772:12)
      at model.Query.Query._castConditions (D:\raghav\web\ecommerce\node_modules\mongoose\lib\query.js:1872:10)
      at model.Query.<anonymous> (D:\raghav\web\ecommerce\node_modules\mongoose\lib\query.js:2129:8)
      at model.Query._wrappedThunk [as _findOne] (D:\raghav\web\ecommerce\node_modules\mongoose\lib\helpers\query\wrapThunk.js:16:8)
      at D:\raghav\web\ecommerce\node_modules\kareem\index.js:369:33
      at processTicksAndRejections (node:internal/process/task_queues:75:11)
      at runNextTicks (node:internal/process/task_queues:62:3)
      at processImmediate (node:internal/timers:435:9)
}

从我的app.js中删除此路由器后,我就没有收到错误消息,如果我重新添加此路由器,则我没有收到任何错误消息(重启系统后,我会再次收到此错误消息)

const productOutputControllers = require('../controllers/productOutputControllers');
const router = require('express');


const app = router();

app.get('/:id', productOutputControllers.product_get);

app.get('/product/:id',productOutputControllers.productDetails_get);
module.exports = app;

控制器的代码是

const Product = require('../model/product');
const adminTypes = require('../model/admin');
const jwt = require('jsonwebtoken');
const User = require('../model/user');

module.exports.product_get = async (req,res)=>{
const typeID = req.params.id;
let type, product;

type = await adminTypes.findById(typeID);
Product.find({type:type.type})
.then(result =>{
  product = result;
  res.render('product',{title:'Mouse',product});
})
.catch(err =>{
console.log(err,"productOP");
});
 };

 module.exports.productDetails_get = async (req,res) =>{
   let same,a,userId;
   const id = req.params.id;
   if(req.cookies.buyer){
    let token = req.cookies.buyer;
    jwt.verify(token,'Ecommerce secret',(err,decodedToken) =>{
    if(err){
      console.log(err,"err");
    }else{
      userId = decodedToken.id;
    } 
    });
    const check = await User.findById(userId);
    check.wishlist.forEach(data =>{
        if(data.productID == id){    
          a = true;   
        }else{
          same = false;
        }
    });
   }else{
     same = false;
   }
    if(a){
      same = true;
    }
    const details = await Product.findById(id);
    res.render('productDesc',{details,same});
  };     

0 个答案:

没有答案