我一直在自学一个MERN CRUD项目,但还没有在前端做任何事情。我已经能够让API在所有基本的crud功能上正常工作。我一直在努力的事情是构造一个端点,允许人们搜索MongoDB并返回任何匹配。
我一直在尝试传递一个将成为HTTP GET请求一部分的键,并将其用于Mongoose find函数,但没有任何进展,我将展示我的工作“findById”函数的样子:
exports.findOne = (req, res) => {
App.findById(req.params.noteId)
.then((data) => {
if (!data) {
return res.status(404).send({
note: "Note not found with id " + req.params.noteId,
});
}
res.send(data);
})
.catch((err) => {
if (err.kind === "ObjectId") {
return res.status(404).send({
note: "Note not found with id " + req.params.noteId,
});
}
return res.status(500).send({
note: "Error retrieving note with id " + req.params.noteId,
});
});
};
所以我试着以此为基础建立搜索函数的模型:
exports.search = async (req, res) => {
App.find(req.params.key)
.then((data) => {
if (!data) {
return res.status(404).send({
note: "Note not found with search query: " + req.params.key,
});
}
res.send(data);
})}
我得到的错误是“参数“过滤器”查找()必须是一个对象”任何想法赞赏,非常感谢。
1条答案
按热度按时间rhfm7lfc1#
错误“find()的'filter'参数必须是对象”表示您向find方法传递的值无效。在这种情况下,您传递的是req.params.key作为参数,但find方法希望接收filter对象作为参数。
若要修复此错误,只需将有效的筛选对象传递给find方法。例如,如果要搜索字段“name”的值为“John”的所有文档,则代码将为: