我对硬编码数组有疑问。我查看了几个先前提出的关于硬编码数组的问题,希望能够以这种方式得到我的答案。但是,在大多数情况下,我不理解答案,这是唯一可能相关的答案:
glob() to build array of files, or hardcode array? Speed is key, but automation is nice
但我的问题要简单得多。我在OpenOffice电子表格中有几个工作表,我选择将其预先处理成一个大的硬编码数组,然后我将存储在我的服务器中。 DIR。为了测试这一点,我将以下几行代码放入名为' distances.js'的文件中。并将该文件放在'服务器'直接在我的app目录中的文件夹:
var distances = {};
distances['Salt Lake City.Washington, DC'] = 2080;
distances['Salt Lake City.Cheyenne'] = 434;
distances['Salt Lake City.Denver'] = 536;
distances['Salt Lake City.Carson City'] = 534;
然后我在我的控制台中运行以下命令,看看我是否能够在我的应用中访问这些数组值:
console.log(distances['Salt Lake City.Carson City']);
我得到的结果是:
未捕获的ReferenceError:未定义分数(...)
然后我尝试在Meteor.isServer内的Meteor.startup函数内的常规project.js文件中插入这些行:
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
var distances = {};
distances['Salt Lake City.Washington, DC'] = 2080;
distances['Salt Lake City.Cheyenne'] = 434;
distances['Salt Lake City.Denver'] = 536;
distances['Salt Lake City.Carson City'] = 534;
});
}
这导致了同样的错误。
我有'不安全''我的项目中安装了软件包,因此安全性不应成为问题。我想我只是缺少一些关于代码需要去哪里的基本知识,以便编译器/解释器看到它。有人可以帮忙吗?
我有点希望有人建议我把所有这些信息都放到一个集合中。我目前不明白为什么这样做会有利,但也许我错过了以这种方式做事的有用性的基本原则。如果是这样,有人可以向我解释或指向一个我可以自己阅读的地方吗?我已经完成了几个流星教程,最近的是你的第二个流星应用程序。这些都是很好的教程,我从中学到了很多东西。但我觉得我的知识中仍有一些漏洞需要解决,这是一个很好的例子。
我的计划是通过函数调用来访问这些硬编码数组元素,如下所示:
getDistance('Salt Lake City','Cheyenne')
因为我不会存储向后的值,例如。从夏延到盐湖城的距离,我打算设置这个函数,这样,如果一个特定的参考是未定义的,它将转动两个元素并以相同的方式再次调用函数,但是使用那些反转的值(即getDistance) ('右边'左边')代替getDistance(' left',' right')。
但是,目前,我甚至无法超越第一步。
提前感谢您提供的任何帮助。
答案 0 :(得分:0)
答案似乎是使用fs模块从文本文件中读取数据并进入您的集合。我仍在努力实现这一目标,但此处还有更多信息:Using nodejs fs module within my meteor app