Javascript 将模型提取到集合

Javascript 将模型提取到集合,javascript,node.js,backbone.js,express,Javascript,Node.js,Backbone.js,Express,我对脊梁骨还很陌生,刚刚遇到这个令人困惑的问题。我正在尝试使用以下代码将模型提取到Express node.js服务器中的集合中: app.get('/tweet', function(req,res){ res.send([{ name: 'random_name' }, {name: 'diren_gezi'}] ); }); 我的主干代码如下所示: var PostsApp = new (Backbone.View.extend({ Collections: {},

我对脊梁骨还很陌生,刚刚遇到这个令人困惑的问题。我正在尝试使用以下代码将模型提取到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()方法。这是什么原因


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

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

passmerge:true,以查看长度为5,其中有效合并了集合

posts.fetch({merge: false});

因为您已经声明了数据,当您提取数据时,您将返回另外两个

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

但是我没有看到2的长度,我看到3的长度。。正如我在问题2中所说的,这是我困惑的一部分,posts.length应该告诉我集合中的模型数量,对吗?对。。但是,您的集合是使用fetch请求刷新的,该请求使用模型填充,因此您可以看到长度为2