使用Backbone Collection查询数据库

时间:2012-08-24 19:23:08

标签: backbone.js

我需要使用骨干集合查询数据库。我不知道该怎么做。我假设我需要在某个地方设置一个网址,但我不知道它在哪里。我很抱歉这一定是一个非常基本的问题,但我在CodeSchool.com上学习了一个骨干课程,我仍然不知道从哪里开始。

这是我收集的代码:

var NewCollection = Backbone.Collection.extend({

    //INITIALIZE

    initialize: function(){

        _.bindAll(this); 

        // Bind global events

        global_event_hub.bind('refresh_collection', this.on_request_refresh_collection);

    } 

    // On refresh collection event

    on_request_refresh_collection: function(query_args){

        // This is where I am lost. I do not know how to take the "query_args"

        //   and use them to query the server and refresh the collection <------

    } 

})

1 个答案:

答案 0 :(得分:4)

简单的答案是你要为你的Backbone.Collection定义一个URL属性或函数,如下所示:

initialize: function() {
    // Code
},
on_request_refresh_collection: function() {
    // Code
},
url: 'myURL/whateverItIs'

OR

url: function() {
    return 'moreComplex/' + whateverID + '/orWhatever/' + youWant;
}

在定义了URL函数之后,您只需要在该集合实例上运行fetch(),它将使用您设置URL的任何内容。

编辑-------进行收集查询

因此,一旦设置了网址,您就可以使用原生的fetch()方法轻松进行查询。

fetch()采用名为data:{}的选项,您可以在其中向服务器发送您的查询参数,如下所示:

userCollection.fetch({
    data: {
        queryTerms: arrayOfTerms[],  // Or whatever you want to send
        page: userCollection.page,  // Pagination data
        length: userCollection.length  // How many per page data
        // The above are all just examples. You can make up your own data.properties
    },
    success: function() {
    },
    error: function() {
    }
});

然后在您的服务器端,您只需要确保获取您的请求的参数并瞧。