我有一个"后端"在MongoDb中编写的应用程序(在数据库中我有_id:使用ObjectId(" 13f6ea ... 002"))我使用meteor app来显示信息。一切都很好我用{{#each}}显示信息列表。但是,当我想要显示一个元素' _Id'什么都行不通。
我阅读this issue并调整我的代码以获得正确的根,但我无法在页面上显示任何内容。我试着写模板助手,但它没有帮助
Db记录:
{
_id: ObjectId("13f6ea...002"),
url: "foo",
title: "bar",
published: "2014-08-22 03:26:21 UTC",
image: "foo.jpg",
summary: "foo ",
categories: [
"F",
"B"
],
...
}
路线:
this.route('news', {
path: '/news/:_id',
template: 'news',
waitOn: function () {
var id = this._id;
Meteor.subscribe('news', id);
},
data: function() {
var id = this.params._id;
return News.findOne({ _id: Meteor.Collection.ObjectID(this.params._id)});
},
action : function () {this.render();},
});
发布
Meteor.publish('news', function(id) {
return News.find({_id: id});
});
重定向到唯一帖子的模板
<h4><a href="{{pathFor 'news' _id=this._id.toHexString}}">{{title}}</a></h4>
模板只是{{news}}
我该如何解决这个问题?
更新
我的解决方案:
router.js
waitOn: function () {
var id = this._id;
Meteor.subscribe('News', id);
},
data: function() {
return News.findOne(new Meteor.Collection.ObjectID(this.params._id));
},
并在模板中
<a href="news/{{_id._str}}">
答案 0 :(得分:1)
导航到浏览器中的相应网址(即localhost:3000/news/[_id]
),打开控制台并输入:
Router.current().data()
这将显示当前路线的数据上下文。要么它什么也不返回,在这种情况下,News.findOne
查询存在根本问题,因为它没有返回任何内容,或者(更有可能)它返回所需的文档。
在后一种情况下,据我所知,该文档中没有news
属性,这就是它不能呈现任何内容的原因。如果您将{{news}}
更改为{{url}}
或{{summary}}
,我会想象它会呈现所请求的属性。
如果按{{news}}
您尝试呈现整个文档,那么(除了它将呈现为[Object]
之类的事实)您需要news
数据函数返回的对象的属性:
return {
news: News.findOne({ _id: Meteor.Collection.ObjectID(this.params._id)});
};
答案 1 :(得分:0)
使用_id获取文档: 在事件下的.js文件中,在Click事件和Collection EventList上说: -
'Submit form' : function () {
var id = this._id;
return EventList.find({_id : id}).fetch();
}
这将返回id的对象。在我的案例中,我正在显示Collection中所有文档的字段。用户选择一条记录并单击“提交”,这将提取所有“文档”字段并显示给用户