【问题标题】:GET request with nested query REST API使用嵌套查询 REST API 获取请求
【发布时间】:2022-01-16 13:08:44
【问题描述】:

从我的 MongoDB 数据库中,我正在查询数据。为此,在我的后端,我通过这个来获取数据,

const products = await Product.find({
    'backCamera.sensor.megaPixels': { $gte: 8 }
  })

如何从前端发送 GET 请求来满足这个查询?

我试过这种方法,但没有用

fetch('http://localhost:5000/api/v1/products?backCamera.sensor.megaPixels[gte]=8')
      .then(response => response.json())
      .then(data => console.log(data));

然后尝试在后端使用查询参数但没有成功。

【问题讨论】:

  • 12 是干什么用的?你能在后台显示控制台记录请求参数的代码吗?
  • 对不起,现在编辑..你可以重新检查

标签: javascript database mongodb rest mongoose


【解决方案1】:

如果你想用 url 动态地显示整个东西,这意味着参数 backCamera.sensor.megaPixels 是动态的,你可以这样去做:

// Frontend
fetch('http://localhost:5000/api/v1/products?product=backCamera.sensor.megaPixels&minimum=8')
      .then(response => response.json())
      .then(data => console.log(data));

// Backend
// Retrieve the params product and minimum from the Url
const products = await Product.find({
    [product]: { $gte: minimum }
  })

【讨论】:

  • 非常感谢兄弟
【解决方案2】:

首先,您不需要将来自URL的查询匹配到后端的查询,也不需要直接发送。因此,您不需要理由去做api/v1/products?backCamera.sensor.megaPixels[gte]=8 之类的事情。在这种情况下,我会传递类似api/v1/products?backCamSensorMinPx=8 的内容,然后我会从 req.query 中提取后端数据并对其进行验证。它将解决一些安全问题(如果您使用 SQL),并将遵循一些分离后端核心逻辑和数据库实现的良好实践。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2012-07-20
    • 2018-05-18
    • 2023-01-08
    • 1970-01-01
    • 2018-12-20
    • 2015-11-16
    相关资源
    最近更新 更多