37

ロードしたい data.json ファイルがあり、lib/ フォルダーに配置しました。その JSON をサーバーの変数にロードするにはどうすればよいですか? ありがとう

4

3 に答える 3

80

これには 3 つの方法があります。最も使い慣れている方法とユース ケースによって異なります。

1つ目は、JSオブジェクトとして保存することです

あなたのjsonデータがフォルダ内のファイルで{ "name":"bob" }使用でき、必要なときに呼び出すことができます。myjson = {"name":"bob"}.js/libmyjson

http 呼び出しの使用

Meteor http経由でインストールされたパッケージが必要ですmeteor add http

サーバー側コード

myobject = HTTP.get(Meteor.absoluteUrl("/myfile.json")).data;

クライアント側コード

HTTP.get(Meteor.absoluteUrl("/myfile.json"), function(err,result) }
    console.log(result.data);
});

それを行う別の方法は、JSON ファイルの ajax スタイルを取得することです (/publicただし、それをフォルダーに入れて、それを使用Meteor.httpして呼び出す必要があります。

ファイルを直接読み取る

最後に、ファイルを直接読み取ることができます。プロジェクトのルートmyfile.jsonにあるディレクトリに保存します。private

var myjson = {};
myjson = JSON.parse(Assets.getText("myfile.json"));

クライアント側でこれにアクセスしたい場合は、 Meteor.methods および Meteor.call とインターフェースする必要があります

どちらの方法でも、最初の方法が最も簡単ですが、どのように使用したいのか、ファイルなどを選択したいのかどうかはよくわかりません

于 2013-03-13T00:15:12.967 に答える
2

私はこれに慣れていないので、これは正しい方法ではないと思いますが、これは私にとってはうまくいきました...

3 つのコーヒー スクリプト ファイル (サーバー ディレクトリに 2 つ):

サーバー.コーヒー:

Meteor.startup ->
    insertSample = (jsondata) ->
      Fiber(->
        Documents.insert
          name: "Sample doc"
          data: jsondata
      ).run()        
    if Documents.find().count() is 0
      insertJSONfile("tests/test.json", insertSample)

JSONfile.coffee を挿入します。

fs = __meteor_bootstrap__.require("fs")

insertJSONfile = (file, insert) ->
  jsondata = undefined
  fs.readFile file, (err, data) ->
    throw err  if err
    jsondata = JSON.stringify(JSON.parse(data))
    insert(jsondata)

ルートディレクトリのmodel.coffee:

@Documents = new Meteor.Collection("documents")

起動時に、JSON ファイル (私の場合はこれを tests ディレクトリに保存しました) が読み込まれ、ドキュメント コレクションのフィールドに挿入されます。

これを適切に行う方法について、他の人から聞いてみたいと思います。

于 2013-03-13T00:14:40.333 に答える
1

json コンテンツを単純な文字列としてではなく、オブジェクトとして表現する必要があると思います。

npm パッケージをインストールすると仮定して、js-yaml ( https://github.com/nodeca/js-yaml ) を使用します。手動でコピーすることもできます。

yaml = __meteor_bootstrap__.require('js-yaml')
fs = __meteor_bootstrap__.require('fs')
content = fs.readFileSync(file, 'utf8')
object = yaml.load(content)

以上です!私は個人的にjsonを流星コレクションに永続化します。

于 2013-03-13T12:51:30.207 に答える