我一直在搜索如何合并多个集合中的数据,然后使用模板助手功能客户端将其发送到模板。
我提到了在Merging collections in Meteor
给出的解决方案以下是我的代码:
模板HTML:
<template name="search_results">
<div class="col-md-12">
{{#if Template.subscriptionsReady}}
<table id="datatable" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Type</th>
<th>Project Name</th>
<th>_id</th>
</tr>
</thead>
<tbody>
{{#each SearchData}}
<tr>
<td>{{search_type}}</td>
<td>{{name}}</td>
<th>{{_id}}</th>
</tr>
{{/each}}
</tbody>
</table>
{{else}}
<div class="loading">{{>spinner}}</div>
{{/if}}
</div>
</template>
模板助手功能:
Template.search_results.helpers({
SearchData: function() {
var project_name = Router.current().params.query.search;
var Projects = Projects.find({project_name: { $regex : project_name, $options:"i" } }).map( function ( Project ) { return { _id: Project._id, name: Project.project_name, search_type: 'Projects' }; }).fetch();
var CustomerAccounts = CustomerAccounts.find({account_name: { $regex : project_name, $options:"i" } }).map( function ( CustomerAccount ) { return { _id: CustomerAccount._id, name: CustomerAccount.account_name, search_type: 'Accounts' }; }).fetch();
var docs = Projects.concat(CustomerAccounts);
return docs;
}
});
我尝试过以下代码从单个集合发送数据并且工作正常:
return Projects.find({project_name: { $regex : project_name, $options:"i" } }).map( function ( Project ) { return { _id: Project._id, name: Project.project_name, search_type: 'Projects' }; });
但是我想合并两个集合并将数据发送到模板,我错了,这样做的好方法是什么?
答案 0 :(得分:0)
游标的map函数返回一个数组,因此调用该数组上的fetch
会引发错误。尝试删除fetch
来电并查看是否有帮助。
答案 1 :(得分:0)
我正在做一个错字错误现在纠正了问题:
检查我的纠正码
var projects = Projects.find({project_name: { $regex : project_name, $options:"i" } }).map( function ( Project ) { return { _id: Project._id, name: Project.project_name, search_type: 'Projects' }; });
var customeraccounts = CustomerAccounts.find({account_name: { $regex : project_name, $options:"i" } }).map( function ( CustomerAccount ) { return { _id: CustomerAccount._id, name: CustomerAccount.account_name, search_type: 'Accounts' }; });
var docs = projects.concat(customeraccounts);
return docs;
我创建了与Collection Name相同的变量名称,然后重新定位,然后将其更改为小写,而不是 var Projects 我将其更改为 var projects ,
我还删除了fetch()
问题现在已解决,正如David建议我删除fetch(),我将他的答案标记为正确,尽管我的代码还有另一个变量名称问题。