Read the statement by Michael Teeuw here.
Creating Module with API Key/Secret
-
@lilpkstud
Well, you can call any variable from your config/defaults using the referencethis.config.variable
.
Orthis.config.requestToken
respectively.Something important to remember:
Sometimes, e.g. when you use a callback function, note that thethis
reference may change (better: the context changes).
Therefore you will often see something like this in the module codes early in a function:self = this
And later on in the callback function
self.config.requestToken
Here, the “this” instance that is bound to its context, gives it’s properties to the global variable “self” that can then be used in any context (because it is global).
For (much) more information check out https://scotch.io/@alZami/understanding-this-in-javascript
-
Having trouble displaying the information that I received from Yelp API
getDom: function() { var self = this; var wrapper = document.createElement("div"); //If this.dataRequest is not empty if(this.data && this.data.length > 0){ console.log("MMM-Test: This.data is set" + this.data); //Name of Business var wrapperDataRequest = document.createElement("h1"); wrapperDataRequest.innerHTML = this.data; wrapperDataRequest.className = 'yelpBusinessName'; wrapper.appendChild(imgDataRequest); wrapper.appendChild(wrapperDataRequest); } else { console.log("MMM-Test: this.data couldn't be found"); wrapper.innerHTML = "This didn't work"; } return wrapper; },
MMM-Test: This.data is set{"id":"E8RJkjfdcwgtyoPMjQ_Olg","alias":"four-barrel-coffee-san-francisco","name":"Four Barrel Coffee","image_url":"https://s3-media1.fl.yelpcdn.com/bphoto/-_Ks4eF8aZcm3GZgUf5Urg/o.jpg","is_closed":false,"url":"https://www.yelp.com/biz/four-barrel-coffee-san-francisco?adjust_creative=joufChkTQP-Ru-G_5cRrMA&utm_campaign=yelp_api_v3&utm_medium=api_v3_business_search&utm_source=joufChkTQP-Ru-G_5cRrMA","review_count":2069,"categories":[{"alias":"coffee","title":"Coffee & Tea"}],"rating":4,"coordinates":{"latitude":37.7670169511878,"longitude":-122.42184275},"transactions":[],"price":"$","location":{"address1":"375 Valencia St","address2":"","address3":"","city":"San Francisco","zip_code":"94103","country":"US","state":"CA","display_address":["375 Valencia St","San Francisco, CA 94103"]},"phone":"+14158964289","display_phone":"(415) 896-4289","distance":1452.8696502343696}
How can I display name?
I tried this.data[0].name or this.data.name but no luck
-
@lilpkstud this.data is an object, not an array. So this.data.name should do the trick. In the code above you have only this.data!?
-
@lavolp3 I deleted this.data.name because I was getting undefined and I still am
-
This line of code will show a { on my mirror so I’m assuming everything is turned into a string?
I used JSON.stringify() in my node_helper file
wrapperDataRequest.innerHTML = this.data[0];
-
@lilpkstud said in Creating Module with API Key/Secret:
JSON.stringify()
correct… u converted the object to a string… don’t need to do that
just pass the object from helper up to module …
then it will use the this.data.name
-
@lilpkstud next to what sdetweil said you should also not save your result into this.data as it is an instance property which already contains data, see https://github.com/MichMich/MagicMirror/tree/master/modules#available-module-instance-properties for reference
-
@strawberry-3-141 should call it api_data maybe!
-
@sdetwell @strawberry-3-141 thanks guys got it to work!
I used JSON.Stringify() to look at the data when I was console.loggining so that was the reason why my object were turning into strings
-
@lilpkstud cool… if need it in strings someplace, need to convert it back object=JSON.parse(string)