【问题标题】:Node.js API filteringNode.js API 过滤
【发布时间】:2015-01-22 13:23:50
【问题描述】:

我有一个端点,例如: channels/:id/albums -> 返回特定频道的所有专辑

我想要的是:我如何过滤结果,假设我只想要具有特定字段的专辑,或者限制返回的行数。

如何在 Node.js 中使用 Express 实现这一点? 我现在拥有的示例代码如下所示:

new Album().where('channel_id', '=', req.params.channel_id).fetchAll()
    .then(function (album) {
        res.json({error: false, status: 200, data: album});
    })
    .otherwise(function (err) {
        res.status(500).json({error: true, data: {message: err.message}});
    });

谢谢,

【问题讨论】:

  • 这是一个假设的 API 吗?你自己?还是服务?它对如何实现应该产生影响
  • 这是一个真实的例子......
  • @Paystey 我不同意,它应该以最好的方式实现......每次。
  • 嗯?你是说我建议实施最糟糕的事情吗? @LulzimFazlija API 是什么?它是否已经为您提供了过滤和限制选项?有文档吗?如果 API 不能做这些事情,那么您将不得不自己编写代码。所有非常不同的解决方案
  • @Paystey 不,我的意思是,这是假设的还是真实的无关紧要。

标签: node.js bookshelf.js


【解决方案1】:

将它们作为查询字符串参数附加,然后在您的 Express 路由中检查它们。例如,如果您的请求是 channels/12345/albums?maxResults=200,那么您应该能够从请求中的 query 对象中读取该值。

app.get('channels/:id/albums', function(req, res) {
    // req.query.maxResults will be 200
});

【讨论】:

  • 是的,我知道如何从 URL 中读取参数,但我要问的是一个更通用的答案,比如如何使过滤更通用,假设我有这个值 200,我现在该怎么办?制作一个单独的函数来显示限制的行数,或者说有人给了?name=album1,我是否也应该制作一个单独的函数来从 name = album1 的专辑中搜索?
  • @LulzimFazlija 这完全取决于您的存储供应商。我开始认为这个问题根本与 Node/Express 无关,更多的是与底层存储(您没有提及)有关。
  • 底层存储是什么意思,这个API是用Node.js中的Express做的
  • 你能给我一个例子,说明我将如何实现这样的案例:channels/:id/albums?fields=name 只显示返回的每个专辑的名称属性
  • @LulzimFazlija 您显然是在查询数据存储,即new Album().where(...).fetchAll() - 如果您的问题与此有关,那么您需要更具体地了解您正在使用的库/存储。
猜你喜欢
  • 2014-12-07
  • 2018-12-03
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2020-03-06
  • 2022-01-03
相关资源
最近更新 更多