获取模型到集合

时间:2013-06-06 18:19:23

标签: javascript node.js backbone.js express

我对Backbone很新,只是遇到了这个令人困惑的问题。我正在尝试使用以下代码在Express node.js服务器中将模型提取到我的集合中:

app.get('/tweet', function(req,res){
    res.send([{ name: 'random_name' }, {name: 'diren_gezi'}] );

});

我的骨干代码如下:

var PostsApp =  new (Backbone.View.extend({
    Collections: {},
    Models: {},
    Views: {},
}

start: function(){
    var data = {
        posts: [
        {name:"gorkem"},
        {name: "janish"},
        {name: "akash"}
    ]
    };
    var posts = new PostsApp.Collections.Posts(data.posts);
    var postsView = new PostsApp.Views.Posts({collection: posts});
    posts.url = "/tweet";
    posts.fetch();
    console.log(posts.length);
    console.log(posts);

}
}))({el : document.body});

我希望console.log(posts.length)返回5,因为我在初始化时添加3,在获取时添加2个。或者即使fetch方法擦除了集合并重新填充,我希望posts.length返回2.然而它返回3,但是当我从控制台查看post对象时我只看到两个模型,来自fetch()方法。这是什么原因?

enter image description here

2 个答案:

答案 0 :(得分:1)

这是因为,当您进行提取时,重置集合

因此先前的内容将被删除并刷新2个新内容。这就是你看到长度为2的原因。

传递合并:true,查看长度为5,其中有效合并集合

posts.fetch({merge: false});

答案 1 :(得分:-1)

因为您已经声明了数据,所以当您进行提取时,还会再返回2个。

var data = {
        posts: [
        {name:"gorkem"},
        {name: "janish"},
        {name: "akash"}