将数据传递到 Meteor 中的路由
Passing Data to a Route in Meteor
我正在使用 PDFKit 创建 PDF 的路径。我想创建一个 PDF,列出属于当前 calendar
的所有 posts
。
此代码 returns "undefined" currentPosts.postDate
。但是,如果我做类似 currentCalendar.name
的事情,它 returns calendar
名称没有问题。
我哪里错了?
Router.route('/calendars/:_id/getPDF', function() {
var currentCalendar = Calendars.findOne(this.params._id);
var currentPosts = Posts.find({}, {fields: {calendarId: this.params._id}});
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text(currentPosts.postDate, 10, 30, {align: 'center', width: 200});
this.response.writeHead(200, {
'Content-type': 'application/pdf',
'Content-Disposition': "attachment; filename=test.pdf"
});
this.response.end( doc.outputSync() );
}, {where: 'server'});
我无法对此进行测试,但这引起了我的注意:
var currentPosts = Posts.find({}, {fields: {calendarId: this.params._id}});
Posts.find({})
将 return 整个记录集。但是你引用 currentPosts.postDate
就好像它是一个项目。也许试试这个:
var currentPost = Post.findOne({_id: this.params._id}, {fields: {postDate: 1}});
[...]
doc.text(currentPost.postDate, 10, 30, {align: 'center', width: 200});
如果您想获取所有 post 日期,则必须循环遍历结果:
// .fetch() turns a mongo cursor into an array of objects
var currentPosts = Posts.find({calendarId: this.params._id}).fetch();
// Assuming you're using underscore.js
_.each(currentPosts, function (o) {
// do something with o.postDate
});
您没有指定where,并且限制了返回的字段。
选项参数中的字段节点可让您定义是否包含字段:实际上应该在您的 where 对象中。
您可能希望您的当前帖子具有这样的结构
var where = {calendarId: this.params._id};
var options = {fields: {postDate: 1}}; // Specify the fields your actually using
var currentPosts = Posts.find(where, options);
我正在使用 PDFKit 创建 PDF 的路径。我想创建一个 PDF,列出属于当前 calendar
的所有 posts
。
此代码 returns "undefined" currentPosts.postDate
。但是,如果我做类似 currentCalendar.name
的事情,它 returns calendar
名称没有问题。
我哪里错了?
Router.route('/calendars/:_id/getPDF', function() {
var currentCalendar = Calendars.findOne(this.params._id);
var currentPosts = Posts.find({}, {fields: {calendarId: this.params._id}});
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text(currentPosts.postDate, 10, 30, {align: 'center', width: 200});
this.response.writeHead(200, {
'Content-type': 'application/pdf',
'Content-Disposition': "attachment; filename=test.pdf"
});
this.response.end( doc.outputSync() );
}, {where: 'server'});
我无法对此进行测试,但这引起了我的注意:
var currentPosts = Posts.find({}, {fields: {calendarId: this.params._id}});
Posts.find({})
将 return 整个记录集。但是你引用 currentPosts.postDate
就好像它是一个项目。也许试试这个:
var currentPost = Post.findOne({_id: this.params._id}, {fields: {postDate: 1}});
[...]
doc.text(currentPost.postDate, 10, 30, {align: 'center', width: 200});
如果您想获取所有 post 日期,则必须循环遍历结果:
// .fetch() turns a mongo cursor into an array of objects
var currentPosts = Posts.find({calendarId: this.params._id}).fetch();
// Assuming you're using underscore.js
_.each(currentPosts, function (o) {
// do something with o.postDate
});
您没有指定where,并且限制了返回的字段。
选项参数中的字段节点可让您定义是否包含字段:实际上应该在您的 where 对象中。
您可能希望您的当前帖子具有这样的结构
var where = {calendarId: this.params._id};
var options = {fields: {postDate: 1}}; // Specify the fields your actually using
var currentPosts = Posts.find(where, options);