2015-11-06 29 views
0

我有一個關於硬編碼數組的問題。我查看了幾個以前提出的關於硬編碼數組的問題,希望通過這種方式得到我的答案。但是,在大多數情況下,我不明白的答案,這似乎像它可能是相關的只有一個:將數據預處理爲硬編碼數組

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:得分沒有定義(...)


然後我attemped插入這些行內部的規則project.js內Meteor.isServer的Meteor.startup函數內部文件:

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') 

因爲我不向後存儲值,例如。從Cheyenne到鹽湖城的距離,我打算設置該函數,以便如果某個特定的引用未定義,它將轉向兩個元素並以相同的方式再次調用該函數,但是這些倒數值(即getDistance ('right','left')代替getDistance('left','right'))。

但是,目前,我甚至無法通過第一步。

在此先感謝您提供給我的任何幫助。

+0

我沒有在您提供的代碼中看到一個名爲'scores'的變量,而且您的控制檯由於未定義而拋出錯誤。所以,我會開始追蹤'分數'來看看那裏發生了什麼。 – MarkPlewis

+0

對不起,'分數'是錯誤實際說的,但爲了這個問題我改了代碼。在這段代碼中,原始代碼中的「分數」實際上是「距離」。所以錯誤應該實際上讀取如下: 未捕獲的ReferenceError:*距離*未定義(...) 我對這種混淆表示歉意。並感謝您指出了。 –

+0

現在我想知道這是否可能是一個局部變量,在代碼的某個部分之外是不可見的。 –

回答