javascript - 将数据传递到 Meteor 中的路由

标签 javascript node.js meteor url-routing node-pdfkit

我正在使用 PDFKit 创建 PDF 的路线。我想创建一个 PDF,列出属于当前日历的所有帖子

此代码为 currentPosts.postDate 返回“未定义”。但是,如果我执行诸如 currentCalendar.name 之类的操作,它会毫无问题地返回 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({}) 将返回整个记录集。但随后您引用 currentPosts.postDate 就好像它是一项一样。也许可以试试这个:

var currentPost = Post.findOne({_id: this.params._id}, {fields: {postDate: 1}});
[...]
doc.text(currentPost.postDate, 10, 30, {align: 'center', width: 200});

如果您想获取所有发布日期,则必须循环遍历结果:

// .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
});

关于javascript - 将数据传递到 Meteor 中的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31261414/

相关文章:

javascript - 铁 meteor 的路线不会触发模板的渲染事件

javascript - Electron:通知不是构造函数

javascript - 在 Canvas 上发出定位输入

javascript - Rhinoslider 返回两个 slider

java - 为什么即使指定了 TFramedTransport,Node JS 也会提示缺少 TFramedTransport?

javascript - Meteor-Angular2 HTML 模板不更新代码更改

javascript - 在加载所有 Meteor 模板加载结束时运行 Javascript

javascript - R leaflet - 显示/隐藏带有组层的 addControl() 元素

node.js - 保存字节数组到文件 Node JS

node.js - 在开发中设置从 Angular 向 NodeJS 发送 API 请求的服务器端口