更新我的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});
};