node.js - node.js,猫鼬 - findOne({ _id: req.params.id }) 不起作用
问题描述
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()。我是初学者,一直在努力寻找解决方案,但没有帮助。
解决方案
问题
您正在尝试将字符串与 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 })
推荐阅读
- here-api - 如何通过此处的 sdk 创建地图标记以显示多用户的朝向?
- jestjs - 渲染 mjml 模板时,本地设置和 CI 之间的 Jest 快照不同
- php - 如何使用 PHP 正确创建此 XML
- python - ImportError:无法导入名称 - Python
- python - 创建记录对 n PySpark DataFrame
- java - 在 Spring Boot Security 中使用 Salt 进行密码散列
- r - 如何在 R 中的时间序列中用同一日期替换特定日期的 NA?
- c# - 序列化 XmlElement 太慢
- python - 日期时间变量为空
- jsf - EL作为属性传递给数据表内的复合组件时未解析