我是骨干,表达和mongodb的新手。 我试图通过字段传递查询字符串来搜索mongodb集合。 我做错了什么。如果我从路由器中注释掉“fetch”,则会找到该页面。 如果我尝试获取,那么我得到一个页面未找到错误。 我试图找出它破坏的地方,但骨干架构仍然让我感到困惑。提前致谢。 (我打赌这是我的mongodb电话中的语法问题) 克里斯汀
这是我的代码。
此网址应返回“type”= 3的集合。
localhost:8888/#content/3
模型/ models.js:
window.Content = Backbone.Model.extend({
urlRoot: "/content",
idAttribute: "_id"
});
window.ContentCollection = Backbone.Collection.extend({
model: Content,
url: "/content"
});
视图/ content.js
window.ContentListView = Backbone.View.extend({
initialize: function () {
this.render();
},
render: function () {
//return this;
this.$el.append('<ul class="thumbnails">');
this.collection.each(function(model) {
this.$('.thumbnails').append(new ContentView({model: model}).render().el);
}, this);
return this;
} });
window.ContentView = Backbone.View.extend({
tagName: "li",
initialize: function () {
this.model.bind("change", this.render, this);
this.model.bind("destroy", this.close, this);
},
render: function () {
$(this.el).html(this.template(this.model.toJSON()));
return this;
}
});
视图/ main.js
var AppRouter = Backbone.Router.extend({
routes: { "content/:type" : "contentType" },
contentType: function(type) {
var contentList = new ContentCollection({type : type});
contentList.fetch({success: function(){
$("#content").empty().append(new ContentListView({collection: contentList}).el);
}});
this.headerView.selectMenuItem('build-menu');
},
utils.loadTemplate([
'ContentView'
], function() {
app = new AppRouter();
Backbone.history.start(); });
contentView.html
name (<% tag won't print here)
路由/ modules.js
exports.findContentByType = function(req, res) {
var type = req.params.type;
db.collection('content', function(err, collection) {
collection.find({'type': type.toString()}).toArray(function(err, items) {
res.send(items);
});
});
};
server.js
app.get('/content/:type', module.findContentByType);
答案 0 :(得分:1)
我在这里可以看到几个问题:
this.headerView.selectMenuItem('build-menu');
(在路由器中)暗示您已在路由器对象中定义了headerView
,但未对其进行定义。this.template
内的ContentView
未定义当我删除#1中的行,并在ContentView
中定义虚拟模板时:
template: _.template("<div> Test: <%= version %> </div>"),
然后视图至少呈现 - see here。 (这是伪数据 - 我无法确认您的服务器是否返回有效/预期的JSON。)