Node.js 使用Express.js与主干网通信的最佳方式

Node.js 使用Express.js与主干网通信的最佳方式,node.js,backbone.js,express,Node.js,Backbone.js,Express,我正在开发Node.js&Express&Backbone&MongoDB应用程序。我有一个通过url获取的项目列表。 在该列表中,我想放置一个select来按价格对项目进行排序。我不知道哪种方法是最好的排序方法,也许我必须在select中放置链接,并使用一个确定的url,如[url]&sort=1,然后像获取所有项目一样获取链接,或者可能我无法使用链接并以另一种和optimus的方式从主干获取此集合 谢谢,关于这一点,我的看法如下。除非必须这样做,否则不要在服务器上进行排序,而是在客户机上进行

我正在开发Node.js&Express&Backbone&MongoDB应用程序。我有一个通过url获取的项目列表。 在该列表中,我想放置一个select来按价格对项目进行排序。我不知道哪种方法是最好的排序方法,也许我必须在select中放置链接,并使用一个确定的url,如[url]&sort=1,然后像获取所有项目一样获取链接,或者可能我无法使用链接并以另一种和optimus的方式从主干获取此集合


谢谢,关于这一点,我的看法如下。除非必须这样做,否则不要在服务器上进行排序,而是在客户机上进行排序。那样的话,它的反应要快得多。如果您有20个项目,并且希望按名称(升序或降序)、库存数量(升序或降序)或价格(相同的东西)进行排序,那么在客户机上进行排序要好得多

当你必须的时候,就是你有1000件物品的时候。您不会在一次呼叫中加载1000个项目,然后对它们进行排序。根据每个项目的大小,您可能一次检索大约30-50个项目。因此,您需要有一种方法来告诉服务器,“给我以下30个项目”,或者更准确地说,“给我30个从X点开始的项目。”

有很多方法可以做到这一点,即使在REST中也是如此。通常,您最好通过查询参数传递起点和计数,就像您所做的那样。因此,如果您得到的是小部件,并且您的API是

GET /widget
然后您将有几个查询字段:
field
(您在哪个字段上排序)、
order
(asc或
des
中的一个)、
count
(整数)和
start
(起始点,记录ID或索引)

由此得出以下结论:

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
end
而不是
start
end
。我看到了名为排序的
order
。但想法是一样的:这四个字段为您提供了服务器检索一组已定义项所需的所有信息。

执行x的最佳方法并不是真正适合Stackoverflow的问题,因为多人可以给出正确答案。不过,排序和筛选主要是通过查询字符串完成的。