【问题标题】:pre-processing data into a hard-coded array将数据预处理为硬编码数组
【发布时间】:2016-02-08 01:37:14
【问题描述】:

我有一个关于硬编码数组的问题。我查看了几个先前提出的关于硬编码数组的问题,希望能以这种方式得到答案。但是,在大多数情况下,我不明白答案,这是唯一一个似乎可能相关的答案:

glob() to build array of files, or hardcode array? Speed is key, but automation is nice

不过,我的问题要简单得多。我在 OpenOffice 电子表格中有几个工作表,我选择将它们预处理成一个大型硬编码数组,然后将其存储在我的“服务器”目录中。为了测试这一点,我将以下代码行放入名为“distances.js”的文件中,并将该文件直接放在我的应用程序目录内的“服务器”文件夹中:

  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 ('right','left') 代替 getDistance('left','right'))。

但是,目前,我什至无法通过第一步。

提前感谢您为我提供的任何帮助。

【问题讨论】:

  • 我在您提供的代码中没有看到名为scores 的变量,并且您的控制台由于未定义而引发错误。所以,我会先追踪scores,看看那里发生了什么。
  • 对不起,'scores' 是错误的实际含义,但为了这个问题,我更改了代码。原始代码中的“分数”实际上是该代码中的“距离”。所以错误实际上应该如下所示: Uncaught ReferenceError: distances is not defined(...) 对于造成的混淆,我深表歉意。感谢您指出这一点。
  • 现在我想知道这是否可能是在代码的某个部分之外不可见的局部变量。
  • 更新:我在 github 上找到了一个链接,其中指出现在可以批量插入到集合中:github.com/meteor/meteor/issues/5263 我怀疑这是我需要做的,所以我会调查这个页面更多详情。谢谢。
  • 好的,我现在怀疑我真正想做的事情在这个链接中有所描述:

    stackoverflow.com/questions/3434311/…

    主要是我需要能够从文本文件中获取数据到 Mongo。阅读批量上传的信息后,我的印象是,它并不能促进这一点。

标签: javascript arrays


【解决方案1】:

答案似乎是使用 fs 模块将数据从您的文本文件中读取到您的集合中。我仍在努力实现这一目标,但这里有更多信息:Using nodejs fs module within my meteor app

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 2022-11-17
    • 2020-03-09
    • 2021-11-16
    相关资源
    最近更新 更多