0

PDFKitを使用してPDFを作成するルートを使用しています。posts現在の に属するすべてを一覧表示する PDF を作成したいと思いますcalendar

このコードは、 に対して「未定義」を返します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'});
4

2 に答える 2

1

これをテストすることはできませんが、これは私の目を引きました:

var currentPosts = Posts.find({}, {fields: {calendarId: this.params._id}});

Posts.find({})レコードセット全体を返します。しかし、それcurrentPosts.postDateが 1 つの項目であるかのように参照します。多分これを試してください:

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
});
于 2015-07-07T06:46:43.463 に答える