J'ai un fichier data.json que je voudrais charger et que j'ai placé dans le dossier lib /. Que dois-je faire pour charger ce JSON dans une variable du serveur? Merci
Il y a trois façons de procéder, cela dépend de ce qui vous convient le mieux et de votre cas d'utilisation.
La première consiste à le stocker en tant qu'objet JS
si vos données json sont { "name":"bob" }
vous pouvez utiliser myjson = {"name":"bob"}
dans un .js
fichier dans le /lib
dossier et appelez simplement myjson
quand vous en avez besoin.
en utilisant un appel http
Vous avez besoin du Meteor http
package, installé via meteor add http
.
Code côté serveur
myobject = HTTP.get(Meteor.absoluteUrl("/myfile.json")).data;
Code côté client
HTTP.get(Meteor.absoluteUrl("/myfile.json"), function(err,result) }
console.log(result.data);
});
Une autre façon de le faire est de récupérer le style ajax du fichier json (vous devrez le mettre dans votre /public
dossier et utilisez Meteor.http
pour l'appeler.
Lire le fichier directement
Enfin, vous pouvez lire le fichier directement, vous stockez votre myfile.json
dans un répertoire private
à la racine de votre projet:
var myjson = {};
myjson = JSON.parse(Assets.getText("myfile.json"));
Si vous voulez y accéder du côté client, vous devrez l'interfacer avec Meteor.methods et Meteor.call
Donc, quelle que soit la façon dont vous le souhaitez, la première est la plus simple, mais je ne sais pas trop comment vous voulez l'utiliser ou si vous voulez choisir le fichier ou quelque chose
Comme je suis nouveau dans tout cela, je soupçonne que ce n'est pas la façon correcte de le faire, mais cela a fonctionné pour moi ...
Trois fichiers de script de café, deux dans le répertoire du serveur:
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)
et insérerJSONfile.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)
et model.coffee dans le répertoire racine:
@Documents = new Meteor.Collection("documents")
Au démarrage, cela devrait charger et insérer le fichier JSON (dans mon cas, je l'ai stocké dans le répertoire tests) dans un champ de la collection de documents.
Je serais ravi d'entendre les autres sur la façon dont cela devrait être fait correctement.
Je suppose que vous voulez que le contenu json soit représenté comme un objet et non comme une simple chaîne.
J'utilise js-yaml ( https://github.com/nodeca/js-yaml ), en supposant que vous installez le paquet npm. Vous pouvez également simplement le copier manuellement.
yaml = __meteor_bootstrap__.require('js-yaml')
fs = __meteor_bootstrap__.require('fs')
content = fs.readFileSync(file, 'utf8')
object = yaml.load(content)
et c'est tout! Je persiste personnellement mon json dans les collections de météores.