使用Express Route从Mongoose填充Backbone Marionette Views

时间:2013-03-14 01:23:51

标签: node.js rest mongoose marionette

我试图使用节点/快速路由获取数据/ api,数据存储在mongo / mongoose中,并在Backbone Marionette中显示...

使用的路线是:

enter code here`app.get('/cats', function(req, res){
Cat.find({}, function (err, docs) {
res.send(docs);
  });
});

2)当我去localhost:3000 / cats时,我让json工作为:

[
{
"__v": 0,
"_id": "51318ce9a7ff43f808000003",
"catname": "Jonas"
},
{
"catname": "Justin",
"_id": "51416268a8225e7413000001",
"__v": 0
},
{
"catname": "Bobby",
"_id": "51416268a8225e7413000001",
"__v": 0
}
]

3)现在我如何让我的数据库中的collection / model / itemview / etc使用这个json数据?

我经常这么做:

MyCat = Backbone.Model.extend({});

MyCats = Backbone.Collection.extend({
model: MyCat,
url: '/cats'
});

CatView = Backbone.Marionette.ItemView.extend({
template: "#cats-template",
tagName: 'li',
className: 'cat'
});

AngryCatsView = Backbone.Marionette.CompositeView.extend({
tagName: "ul",
id: "cats",
template: "#cats-template",
itemView: CatView,

appendHtml: function(collectionView, itemView){
collectionView.$("ul").append(itemView.el);
}
});

但是我不确定使用哪种类型的初始化程序。 我见过硬编码json的例子,但是没有来自db。

3 个答案:

答案 0 :(得分:1)

不确定这是否适合您的情况,但在您的收藏中,添加一个接受您的数据的解析方法。您可能有一个嵌套数组,Backbone无法从中检索内部数据。

parse: function(data) {
  return data[0];
}

我会在此解析方法中添加一个调试点,以查看传入的数据是否嵌套数据。

答案 1 :(得分:1)

您发布的代码中没有任何地方您实际从服务器中提取了您的收藏。

尝试这个:

var catCollection = new MyCats();
catCollection.fetch();

var angryCatsView = new AngryCatsView({collection: catCollection});
angryCatsView.render();

答案 2 :(得分:0)

问题是这个...... var thecats = myCats(); thecats.fetch(); 希望它可以帮助某人