我正在尝试查询快递中的猫鼬对象' Order '。但是,当我在 find 上的括号之间添加 querystring 变量时,它不起作用。我对如何解决此问题的文档有些迷茫。
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!'});
});
});
答案 0 :(得分:1)
您知道为什么,因为您需要传递给Model.find()
的条件必须是object
:
Model.find()
参数
- 条件“对象”
- 要返回的[投影]«对象|字符串»可选字段,请参阅Query.prototype.select()
- [选项]«对象»可选,请参阅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) {});
在您的代码中,您正在向该方法传递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
希望它会有所帮助。
答案 1 :(得分:0)
find
接受查询 object ,而不是字符串。所以应该是:
Order.find({orderedByUser: userID}).then(...