我在开发Node.js&快递&骨干& MongoDB应用程序。我有一个通过网址获取的项目列表。 在该列表中,我想要选择按价格对项目进行排序。我不知道这是进行这种排序的最好方法,也许我必须在选择中添加链接,如[URL]& sort = 1这样的确定网址并获取它就像我取出所有项目一样,或者也许我无法使用链接并以另一种方式从主干中获取此集合?
谢谢,问候
答案 0 :(得分:2)
我对此的看法如下。除非必须,否则请避免在服务器上进行排序,而是在客户端上进行排序。它的响应速度要快得多。如果您有20个项目,并希望按名称(升序或降序),库存数量(升序或降序)或价格(相同的事物)进行排序,那么在客户端上进行排序要好得多。
必须时,是否有1,000件物品。您只是不会在通话中加载1,000个项目,然后对它们进行排序。您可能一次检索大约30-50,具体取决于每个项目的大小。所以你需要有办法告诉服务器,“给我以下30项”,或者更准确地说,“从X点开始给我30个项目。”
即使在REST中,也有很多方法可以做到这一点。一般情况下,您最好通过查询参数传递起点和计数,就像您一样。因此,如果您正在获取小部件,并且您的API是
GET /widget
然后你会有几个查询字段:field
(你要排序的字段),order
(asc
或des
之一),{{1} (整数)和count
(指向开始,记录ID或索引)。
这给出了以下内容:
start
这有变种,例如而不是GET /widget?field=name&count=30&start=100&order=asc // get widgets sorted by field in ascending order, starting with the 100th widget and going for 30 widgets
GET /widget?field=price&count=20&start=225&order=desc // get widgets sorted by price from highest to lowest (descending order), starting with the 100th widget and going for 20 widgets
和start
,您可以count
和start
。我看到end
被称为order
。但是这个想法是一样的:这四个字段为您提供了所有服务器需要知道以检索一组已定义的项目。