在Meteor中导入JSON文件

我有一个data.json文件,我想加载,我已经放在lib /文件夹。 我应该怎么做,以便将该JSON加载到服务器中的variables? 谢谢

有三种方法可以解决这个问题,这取决于你最喜欢的和你的用例。

首先是将其存储为JS对象

如果您的json数据是{ "name":"bob" }您可以在/lib文件夹的.js文件中使用myjson = {"name":"bob"} ,只需在需要时调用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接口

所以无论你想要什么,第一个是最简单的,但我不太清楚你想如何使用它,或者你是否想要select文件或东西

因为我对这一切都是陌生的,我怀疑这不是正确的方法来做到这一点,但这已经对我有效…

三个咖啡脚本文件,两个在服务器目录中:

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文件(在我的情况下,我已经存储在testing目录中)到文档集合中的字段。

我很想听听其他人如何正确地做这件事。

我假设你想要json的内容被表示为一个对象,而不是一个简单的string。

我使用js-yaml( https://github.com/nodeca/js-yaml ),假设你安装了npm包。 您也可以手动复制它。

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

就是这样! 我个人坚持我的JSON到meteorcollections。