首页 > 解决方案 > node.js,猫鼬 - findOne({ _id: req.params.id }) 不起作用

问题描述

我正在做这个练习https://openclassrooms.com/fr/courses/6390246-passez-au-full-stack-avec-node-js-express-et-mongodb/exercises/3732

findOne() 不起作用:

app.get('/api/products/:id', (req, res, next) => {  
  console.log('Product.findOne({ id:'+req.params.id+'}) :' );
  Product.findOne({ _id: req.params.id })  
    .then(product  => { console.log("\nprod =\n"+json({product})); res.status(200).json({product})} ) 
    .catch(error   => { console.log('error here');                 res.status(404).json({ error })} );
});

我的后端服务器显示在终端中: 在此处输入图像描述

其他两条路线正常工作: 在此处输入图像描述

这些项目确实在数据库中: 在此处输入图像描述

我试图用 FindById() 替换 findOne()。我是初学者,一直在努力寻找解决方案,但没有帮助。

标签: node.jsmongodb

解决方案


问题

您正在尝试将字符串与 ObjectId 进行比较

解决方案

https://docs.mongodb.com/manual/reference/method/ObjectId/

const ObjectId = require('mongodb').ObjectId;
const id = ObjectId(req.params.id); // convert to ObjectId
Product.findOne({ _id: id })  

推荐阅读