Express API REST 过滤数据 MongoDB
Posted
技术标签:
【中文标题】Express API REST 过滤数据 MongoDB【英文标题】:Express API REST Filter Data MongoDB 【发布时间】:2019-01-14 17:53:38 【问题描述】:我有一个带有 express 和 mongo 的 Pokemon API REST。我试图按他的类型过滤口袋妖怪。
我从 Angular 发送了一个 http GET,其中包含要过滤参数的类型。
有以下controller.js
const pokemons = require('../models/pokemon');
const laboratoryCtrl = ;
laboratoryCtrl.filterPokemon = async (req, res) =>
const filterType = req.query.type; // filterType = "Fire"
const pokemon = await pokemons.find( $or : [type: /^Fire/, type2: /^Fire/] )
.sort( pokedex: + 1 );
res.json(pokemon);
module.exports = laboratoryCtrl;
如何在 .find() 方法中使用实际上是 Fire 的“filterType”值?
这是过滤数据的好方法吗?这是我的第一个 API REST 和我的第一个 express + mongo 项目
【问题讨论】:
【参考方案1】:使用 RegExp
构造函数创建带有 filterType
变量的正则表达式实例:
const rgx = new RegExp(`^$req.query.type`); //or new RegExp('^'+req.query.type)
const pokemon = await pokemons.find(
'$or': [
'type' : rgx ,
'type2': rgx
]
).sort( pokedex: + 1 );
res.json(pokemon);
【讨论】:
嘿@chridam 你能再帮我一次吗?我怎么能做同样的事情,但这次使用 sort() 方法和 pokedex 属性,我总是得到 /pokedex/,我只需要“pokedex” nvm 我找到了解决方案,我分享了,所以也许其他人可以使用它const filterStat = new Object();
filterStat[req.query.type] = + 1;
嘿又是我!如果我不选择要过滤的类型,如何使用 Regexp 在 SQL 上设置等效的 *? /^*/
/^''/
/^%/
不工作
你将不得不用强烈反对来逃避它,例如new RegExp("^\\*")
有了你的信息,我可以更好地搜索并找到解决方案/.*?/
以上是关于Express API REST 过滤数据 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章
使用我的 node/express rest api 服务器获取数据时 CORS 被阻止
如何在 REST API 上直接启用托管元数据字段的过滤器?
如何使用 Advanced REST Client 或 Postman 测试 Express/node REST API 后端?