web-dev-qa-db-ja.com

MeteorでJSONファイルをインポートする

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

37
Alex

これを行うには3つの方法がありますが、それは最も快適なものとユースケースによって異なります。

最初はJSオブジェクトとして保存することです

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

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とインターフェースする必要があります。

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

80
Akshat

私はこれにすべて慣れていないので、これは正しいの方法ではないと思うが、これは私のために働いた...

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

server.coffee:

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

およびinsertJSONfile.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ディレクトリに保存しました)をロードし、ドキュメントコレクションのフィールドに挿入する必要があります。

これを適切に行う方法について他の人から聞きたいです。

2
Paul Young

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を流星コレクションに保持しています。

1
Thierry