在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。