使用 Meteor 允许路由访问集合中的数据
Allowing a Route to Access Data from a Collection with Meteor
我正在使用 meteor-pdfkit 创建 PDF 的路径。这是我当前的代码,它允许我在 PDF 上显示我的 Calendars
ID
。
Router.route('/calendars/:_id/getPDF', function() {
var currentCalendar = this.params._id;
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text(currentCalendar, 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'});
但是,当我尝试包含来自 Calendars 集合的其他信息时,数据返回为未定义或产生错误。例如,如果我尝试调用 curentCalendar.name
:
Router.route('/calendars/:_id/getPDF', function() {
var currentCalendar = this.params._id;
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text(currentCalendar.name, 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'});
我假设这是因为路由无法访问集合中的信息。如何允许路由访问日历集合中的信息?
currentCalendar.name
未定义,因为您要在字符串 currentCalendar
上查找 属性 name
,它只不过是 [=28] 中提供的 id 值=].因此,它只知道一个数字。
您需要做的是创建一些包含日历信息的数组,即:
global.calendars = [{name: "Holidays", data: ...}, {name: "Tests", data: ...}]
然后,在你的路由中,你可以根据索引获取信息:
doc.text(calendars[currentCalendar].name, 10, 30, {align: 'center', width: 200});
因为现在calendars[currentCalendar].name
被定义
在您的代码中,currentCalendar
被设置为一个 ID。我想你想写:
var currentCalendar = Calendars.findOnw(this.params._id);
现在 currentCalendar
将是一个具有属性的文档,例如currentCalendar.name
.
我正在使用 meteor-pdfkit 创建 PDF 的路径。这是我当前的代码,它允许我在 PDF 上显示我的 Calendars
ID
。
Router.route('/calendars/:_id/getPDF', function() {
var currentCalendar = this.params._id;
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text(currentCalendar, 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'});
但是,当我尝试包含来自 Calendars 集合的其他信息时,数据返回为未定义或产生错误。例如,如果我尝试调用 curentCalendar.name
:
Router.route('/calendars/:_id/getPDF', function() {
var currentCalendar = this.params._id;
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text(currentCalendar.name, 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'});
我假设这是因为路由无法访问集合中的信息。如何允许路由访问日历集合中的信息?
currentCalendar.name
未定义,因为您要在字符串 currentCalendar
上查找 属性 name
,它只不过是 [=28] 中提供的 id 值=].因此,它只知道一个数字。
您需要做的是创建一些包含日历信息的数组,即:
global.calendars = [{name: "Holidays", data: ...}, {name: "Tests", data: ...}]
然后,在你的路由中,你可以根据索引获取信息:
doc.text(calendars[currentCalendar].name, 10, 30, {align: 'center', width: 200});
因为现在calendars[currentCalendar].name
被定义
在您的代码中,currentCalendar
被设置为一个 ID。我想你想写:
var currentCalendar = Calendars.findOnw(this.params._id);
现在 currentCalendar
将是一个具有属性的文档,例如currentCalendar.name
.