ロードしたい data.json ファイルがあり、lib/ フォルダーに配置しました。その JSON をサーバーの変数にロードするにはどうすればよいですか? ありがとう
3 に答える
これには 3 つの方法があります。最も使い慣れている方法とユース ケースによって異なります。
1つ目は、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 とインターフェースする必要があります
どちらの方法でも、最初の方法が最も簡単ですが、どのように使用したいのか、ファイルなどを選択したいのかどうかはよくわかりません
私はこれに慣れていないので、これは正しい方法ではないと思いますが、これは私にとってはうまくいきました...
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 ディレクトリに保存しました) が読み込まれ、ドキュメント コレクションのフィールドに挿入されます。
これを適切に行う方法について、他の人から聞いてみたいと思います。
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を流星コレクションに永続化します。