我有两个单独的集合,Patients
和Invoices
:
Patients Collection
{
first_name: ...
surname: ...
...
}
Invoices Collection:
{
invoice_no: ...
patient_id: ...
...
}
我想显示一张显示所有发票的表格。在列中,我想向患者显示发票与之相关(我已将patient_id
作为Invoices
集合中的一个字段)。
所以我有这个帮手:
Template.showInvoices.helpers({
invoices: function () {
return Invoices.find(); // i know this isn't ideal.
}
});
这是模板:
<template name="showInvoices">
{{#each invoices}}
<tr>
<td>{{invoice_no}}</td>
<td> [PATIENT NAME] </td>
</tr>
{{/each}}
</template>
如何从发票数据上下文中获取患者姓名?来自MySQL和关系数据库,我不禁想知道这是否适合我的特定情况,因为我不完全确定如何执行此查询。我应该改变我的设计吗?
答案 0 :(得分:1)
您可以利用定义集合时可用的可选转换功能 transform
。转换选项是一个将文档作为参数并可以修改的函数。文档将在从fetch
或findOne
返回之前传递给此函数,然后传递给observe
,map
,forEach
,{{ 1}}和allow
因此,这将允许您将来自另一个collecion的数据嵌入到连接中。
例如,如果您要重构流星应用程序,可以按照以下步骤重新定义deny
集合:
Invoices
现在,当您在帮助程序中调用Invoices = new Mongo.Collection('invoices', {
transform: function(doc) {
doc.patient = Patients.findOne(doc.patient_id);
return doc;
}
});
时,您将可以访问Invoices.find().fetch()
属性patient
文档:
Patient
<强>模板强>:
Template.showInvoices.helpers({
invoices: function () {
return Invoices.find().fetch();
}
});