2012-09-10 75 views
0

我試圖通過執行以下操作來設置了一個param傳遞到MongoDB的腳本:測試存在

mongo --eval="foo='hello world'" test.js 

但我想變富是可選的(即使用foo如果存在,否則繼續沒有它),所以在test.js我測試變量的存在:

if (foo) 
    print(foo) 
    //do stuff with foo 

這將引發一個錯誤,如果我不指定在命令行富:

$ mongo test.js 
ReferenceError: foo is not defined test.js:1 
failed to load: test.js 

這通常適用於普通JS,我如何在mongo腳本中執行此操作?

基本上,我希望能夠仍然做mongo test.js沒有設置foo變量,並讓腳本仍然工作。

回答

5

我相信mongo的js運行時類似於node.js,因爲它不允許直接訪問尚未定義的變量。我爲此測試的方式是使用「global.foo」(或「this.foo」,取決於具體情況),如果定義它將返回foo,否則將會是未定義的(並且不會導致錯誤)。

+0

完美。使用this.foo,工作我需要它。謝謝。我會接受答案,當我們讓我(沒有意識到有接受答案:))。 – dule