mongodb - 通过字段使用 Mongoose 进行查询
问题描述
我正在尝试以快递查询此猫鼬对象“ Order ”。但是,当我在find的括号之间添加查询字符串变量时,它不起作用。我对如何解决这个问题的文档有点迷茫。
router.get('/allorders', jwtAuth, function(req,res,next) {
const userID = req.user.username;
const querystring = "{orderedByUser: '" + userID + "'}";
//Order.find() works
Order.find(querystring)
.then(orders =>{
res.json(orders).end();
}).catch( err=> {
res.status(500).json({error: 'Something went wrong!'});
});
});
解决方案
你知道为什么,因为你需要传递给的条件Model.find()
必须是object
:
模型.find()
参数
- 条件«对象»
- [投影] «Object|String» 要返回的可选字段,请参见 Query.prototype.select()
- [选项] «Object» 可选参见 Query.prototype.setOptions()
- [回调] «功能»
退货
- “询问”
查找文档
例如:
// named john and at least 18
MyModel.find({ name: 'john', age: { $gte: 18 }});
// executes immediately, passing results to callback
MyModel.find({ name: 'john', age: { $gte: 18 }}, function (err, docs) {});
在您的代码中,您将 a 传递string
给该方法而不是object
.
然后,试试这个:
router.get('/allorders', jwtAuth, function(req,res,next) {
const userID = req.user.username;
const conditionsObject = {orderedByUser: userID}; // fixed
//Order.find() works
Order.find(conditionsObject) // fixed
.then(orders =>{
res.json(orders).end();
}).catch( err=> {
res.status(500).json({error: 'Something went wrong!'});
});
});
有关Model.find()
方法的更多信息,您可以在此处阅读:https ://mongoosejs.com/docs/api.html#model_Model.find
希望它有所帮助。
推荐阅读
- python - Jupyter笔记本中的Seaborn图表忽略了figsize参数
- linux - 使用 Docker 限制进程的 CPU 和内存使用?
- python - 如何使用python将时间戳列名重命名为多索引数据框中的字符串/对象
- oauth-2.0 - 远程服务器返回错误:(421) - 尝试访问 Office 365 邮箱时出现此错误
- javascript - 10 秒倒计时计时器 / vue.js
- asp.net-core - 通过 ASP.NET Core Web 服务提供无限长度的视频
- python - 线性插值以找到 y 值
- c# - 使用 c# 的外键在表中插入数据
- python - 动画和导出 cartopy Nightshade 功能
- python - 在列的每个值中添加一个元素