I have a collection with some data I brought from JSON file: Data.insert( JSON.parse(Assets.getText('data.json')) );. I want to create a var with all the data in a JS file that is not part of a template.
Should I just do var data = Data.find({}).fetch()[0]?
Sometimes the fetch returns empty and I get undefined so I’m guessing this is not the best way. What would be the correct way?
If you just need a single result, use findOne instead of find. That way you don’t have to use fetch.
var data = Data.findOne({});
When it doesn’t find anything I believe it simply returns undefined or an empty object. Can’t recall which one right now.
If you have several objects, you should do an undefined check on data (without the [0]) and then iterate if not undefined.
var data = Data.find({}).fetch();
if(data !== undefined){
for(var i = 0; i<data.length; i++){
...Do what you need to with the objects.
}
}else{
...Do some error handling if needed
}
To insert the data I do Cards.insert( JSON.parse(Assets.getText('cards.json'))) and when I do the query I get an array in which each item is the object I inserted (for each time I re-run this code). so this is why I do [0]