Strongloop API GET 请求不返回项目/记录计数

Posted

技术标签:

【中文标题】Strongloop API GET 请求不返回项目/记录计数【英文标题】:Strongloop API GET request does not return item/record count 【发布时间】:2015-07-06 06:29:19 【问题描述】:

我是 strongloop api 的新手,但我在使用其他 api 方面有一些经验。 在使用 strongloop api 构建分页功能时,我了解到 strongloop api 不会在结果中返回总记录,无论是在响应正文中还是在标头中

我一直在寻找与此类似的功能。 What’s the best RESTful method to return total number of items in an object?

我的问题是 还有其他方法可以使用 strongloop api 实现相同的功能吗?

我检查了 strongloop api 和 *** 问题,但没有得到 满意的结果。

我认为这是非常基本的功能,它一定是在那里实现的。任何建议都会有所帮助。谢谢

【问题讨论】:

您是否尝试过使用远程挂钩? docs.strongloop.com/display/public/LB/Remote+hooks 你介意接受我的回答吗:) 感谢您的回答,但不能满足问题。感谢您的努力。 任何选择查询的结果都是一个数组。可以得到数组对象的长度。 【参考方案1】:

要查找记录总数, 您可以使用 REST API 或 NodeJS 调用。 SDK 中还提供其他选项,例如 Angular SDK,用于查询格式的细微变化

REST API:

http://0.0.0.0:3001/api/brands/count

节点

    var Brand = app.models.brand;
    Brand.count(function (err, count) 
        console.log(count);
        
    );

要进行分页,请使用:"skip":40,"limit":10 例如:

    var Brand = app.models.Brand;
    Brand.find(
        skip: 30,
        limit: 20
    , function (err, data) 
        res.send(data);
    )

这将为您提供分页数据。您还可以结合上述代码使用 where 条件、排序等。

干杯!

【讨论】:

【参考方案2】:

如果您想要的只是计数,并且您不介意为了获得计数而提出第二个请求,那么 Strongloop 确实支持:api/<YOUR-MODLE-NAME>/count

但是我假设您想要的只是发出一个请求并获取计数和数据,如果是这种情况,那么您可以使用远程挂钩来执行此操作,以便在标头中添加这些额外的信息,或结果本身。

要在标头中添加总计数,请查看 GitHub 中的此线程,有人发布了代码示例以在返回的标头中添加 X-Total-Count: https://github.com/strongloop/loopback/issues/1411

您还可以在模型中使用 afterRemote 挂钩并更改返回的结果以在某处添加计数。这是一个例子:

module.exports = function (Model) 
    Model.afterRemote('find', function (ctx, model, next) 
        Model.count().then(function (totalCount) 
            ctx.result = 
                total: totalCount,
                items: model
            ;
            next();
        );
    );
;

假设您使用的是 Strongloop API v3,请查看其文档的远程挂钩会话:https://loopback.io/doc/en/lb3/Remote-hooks.html

希望这会有所帮助。

【讨论】:

以上是关于Strongloop API GET 请求不返回项目/记录计数的主要内容,如果未能解决你的问题,请参考以下文章

StrongLoop 验证错误和必填字段

Strongloop:如果 Hook 操作失败,如何返回错误?

axios GET 请求不返回任何数据(VueJS 和 NodeJS)

React - 带有标头的 ajax GET 请求仍返回 401(未经授权)

GET Web API 方法返回不允许的方法

ASP.NET Web API - 请求的资源不支持 http 方法“GET”