【发布时间】:2015-12-01 08:39:57
【问题描述】:
我从 1-2 周开始阅读和观看有关 Meteor 的教程。我已经了解了如何构建有关服务器和客户端代码、帐户、安全性等的流星应用程序。 我想不通的是: 我在哪里正确放置计算逻辑?
例如: 用户将数据放入表单中,数据保存在数据库中。根据这个输入数据,我想通过将数据通过让我们说大约 20 个方法的链接来进行几次计算,最后显示一些结果。
目前,我在 Template.displayResults.helper 所在的文件中拥有所有这些方法。 当我将它们放在另一个文件中时,它们不会被识别,我认为是因为 Meteor 放置了包装器。
示例:我有一组 DIY 项目,每个项目都有一个字段,其中包含项目所需的一系列实用程序。
Projects = new Mongo.Collection('projects');
/*
exampleProject = {
"name": "Kitchen table",
"utilities": ["Hammer", "Glue"]
}
*/
我想根据用户检查的实用程序显示所有可能的 DIY 项目。
用户界面有一组复选框,用户可以选择一堆他想使用的实用程序。 这些值保存在一个集合中。
Utilities = new Mongo.Collection('utilities');
/*
exampleUtility = {
"name": "Hammer",
"checked": true
}
*/
然后我想计算可能的项目...
Template.displayResults.helpers({
projectsPossible: function () {
var utilitiesCheckedDB = Utilities.find({
checked: true
}).fetch();
var projectsAll = Projects.find().fetch();
return projectsPossible(utilitiesCheckedDB, projectsAll);
}
});
// Returns an array of all possible projects depending on the selected utilities
function projectsPossible(utilitiesCheckedDB, projectsAll) {
var result = [];
_.each(projectsAll, function (project) {
if (project.utilities.length === _.intersection(project.utilities, checkedCheckboxesList(utilitiesCheckedDB)).length) {
result.push(project);
}
});
return result;
}
// Returns an array of all checked utilities in the current checkbox database
function checkedCheckboxesList(checkedCheckboxesDB) {
var result = [];
_.each(checkedCheckboxesDB, function (checkbox) {
result.push(checkbox.name);
});
return result;
}
问题是:还有更多方法,例如“projectsPossible”和“checkedCheckboxesList”。我应该将这些方法放在哪里以获得良好的结构?
提前致谢! 输入电压
【问题讨论】:
-
您能否提供一个重现问题的minimal example(或至少在您的问题中添加代码)?
标签: javascript html meteor