I'm trying to fetch second [1] item's title from an object array in JSON:
{
"#attributes": {
"version": "2.0"
},
"channel": {
"title": "Rust News",
"description": "The latest news posts from Rust",
"lastBuildDate": "Thu, 07 Jul 2022 07:00:00 Z",
"item": [
{
"guid": "https:\/\/rust.facepunch.com\/news\/july-2022-update\/",
"link": "https:\/\/rust.facepunch.com\/news\/july-2022-update\/",
"title": "July Update",
"description": "<img src=\"https:\/\/files.facepunch.com\/paddy\/20220705\/july_2022_header.jpg\"><br\/>Combat balance, faster load times, chat filter and much more!\u00a0\u00a0",
"pubDate": "Thu, 07 Jul 2022 07:00:00 Z"
},
{
"guid": "https:\/\/rust.facepunch.com\/news\/community-update-243\/",
"link": "https:\/\/rust.facepunch.com\/news\/community-update-243\/",
"title": "Community Update 243",
"description": "<img src=\"https:\/\/files.facepunch.com\/errn\/1b1311b1\/FTTfqglWQAMxkzD.jpg\"><br\/>Custom desk mats, Mars monuments, thoughtful poetry, and more!",
"pubDate": "Wed, 15 Jun 2022 12:00:00 Z"
}
...
Here is the axios code:
mounted() {
this.axios.get("./api/feedRust.php").then(response => {
this.items = response.data.channel;
});
}
Everything works as expected when tusing response.data.channel, however unable to fetch any object from item array due to this error:
Cannot read properties of undefined (reading '1')
HTML/Vuejs code:
<div>{{items.item[1].title}}<div>
What could be wrong here?
You need to make sure you defined data with the property, because while fetching the response data, it will try to access the items.item, which may not exists with the index.
Add the conditional statement.
Like this:
<div v-if="items.item && items.item.length > 1">{{items.item[1].title}}<div>
Related
I'm using BankTransfers endpoint to add transfers between bank accounts. It used to work like a charm in the past. I did not make any changes to my code, but transfers suddenly stopped to appear. Xero responds with 200 code and status OK but transfers just won't show up. Also, TransferID looks like this for some reason:
"BankTransferID": "00000000-0000-0000-0000-000000000000"
ValidationErrors is empty so it seems that the transfer is accepted as valid, but won't show up in any of the accounts involved.
Transfer body I use looks like this:
{
"BankTransfers": [{
"FromBankAccount": {"Code": transfer_from },
"ToBankAccount": {"Code": transfer_to},
"Date": transaction_date.strftime("%Y-%m-%d"),
"Amount": amount}]}
And response looks like this:
{
"Id": "1d28fdb6-cadf-4f4c-9801-55b47567e87d",
"Status": "OK",
"ProviderName": app_name_hidden,
"DateTimeUTC": "\/Date(1628847828463)\/",
"BankTransfers": [
{
"BankTransferID": "00000000-0000-0000-0000-000000000000",
"DateString": "2021-08-13T00:00:00",
"Date": "\/Date(1628812800000+0000)\/",
"FromBankAccount": {
"AccountID": account_id_hidden,
"Code": "1057",
"Name": account_name
},
"ToBankAccount": {
"AccountID": account_id_hidden_2,
"Code": "1073",
"Name": account_name_2
},
"Amount": 1000.00,
"FromBankTransactionID": "00000000-0000-0000-0000-000000000000",
"ToBankTransactionID": "00000000-0000-0000-0000-000000000000",
"CurrencyRate": 1.0000000000,
"ValidationErrors": []
}
]
}
Did anyone face the same issue? Would appreciate any suggestions.
Our developers made a release that fix this issue.
Apologies for the inconvenience caused
I am using paypal adaptive payment API.
https://svcs.sandbox.paypal.com/AdaptivePayments/Pay
Request payload
{
"actionType":"PAY",
"memo":"Example",
"preapprovalKey":"PA-4PV844316B104562R",
"receiverList":{"receiver":{"amount":"14.00","email":"reveiver.email#gmail.com"}},
"currencyCode":"CHF",
"requestEnvelope":{"errorLanguage":"en_US"},
"pinType":"NOT_REQUIRED",
"feesPayer": "SENDER",
"senderEmail":"sender.email#gmail.com",
"returnUrl":"http://www.google.com/?paypal=ok",
"cancelUrl":"http://www.google.com/paypal=cancel",
"clientDetails": {
"applicationId": "APP-80W284485P789543T"
}
}
Getting response
{
"responseEnvelope": {
"timestamp": "2018-11-05T20:45:14.602-08:00",
"ack": "Failure",
"correlationId": "1609b946b9c72",
"build": "50069244"
},
"error": [
{
"errorId": "520002",
"domain": "PLATFORM",
"subdomain": "Application",
"severity": "Error",
"category": "Application",
"message": "Internal Error",
"parameter": [
"Unable to convert currency"
]
}
]
}
If I send currencyCode:"USD" then it work fine But when i pass currencyCode:"CHF" Then it gives error in response. My all sandbox account currency is CHF. Till 26th Oct it's working but suddenly gives error when i check on 3rd Nov.
Base on my debugging, it happens when you have more than one receiver, currency is not USD and reverseAllParallelPaymentsOnError is set to true.
When reverseAllParallelPaymentsOnError is set to false, the transaction is pushing through.
Not a solution though, I'm still checking for other solution.
I am having issues when trying to create a Zone using the API.
I can create the zone with the basic info, but as soon as I want to add another property (specifically "location") I get an error.
This is my dataset I use for the POST
def id_prov ={
"domainId": "$DomainId",
"name": "$ZoneName",
"login": {
"apLoginName": "xxxxx",
"apLoginPassword": "xxxxx"
},
"description": "$jira_summ",
"version": "3.5.1.0.1010",
"countryCode": "ZA"
"location": "$CalledStationName_val",
}
The API creates everything until I either include the "location" property in the original POST or if I try a PUT or PATCH atferwards.
Result value:
{"message":["object instance has properties which are not allowed by the schema: [\"location\"]"],"errorCode":101,"errorType":"Bad HTTP request"}
Anyone come across this or have any ideas on how to get this working?
Thanks
A comma is required after "countryCode": "ZA". The post payload should look like this:
def id_prov ={
"domainId": "$DomainId",
"name": "$ZoneName",
"login": {
"apLoginName": "xxxxx",
"apLoginPassword": "xxxxx"
},
"description": "$jira_summ",
"version": "3.5.1.0.1010",
"countryCode": "ZA",
"location": "$CalledStationName_val",
}
I have a cloudfront distribution that is working fine with an S3 origin.
After adding a second origin, I also add a new cache behaviour so I would get:
first.domain.com: goes to the first origin (via the default * cache behaviour path)
first.domain.com/elsewhere: goes to the new origin (via a new elsewhere/* cache behaviour path)
I feel something maybe wrong or missing, but can't tell from the docs what it could be.
After reading these answers:
One
Two
I can't still figure what is not working. I enabled the S3 logs but they can take hours to update.
Any help is appreciated!
The error I get after hitting the second URL is:
"response": {
"status": 403,
"statusText": "",
"httpVersion": "http/2.0",
"headers": [
{
"name": "status",
"value": "403"
},
{
"name": "content-type",
"value": "application/xml"
},
{
"name": "date",
"value": "Fri, 17 Aug 2018 03:28:54 GMT"
},
{
"name": "server",
"value": "AmazonS3"
},
{
"name": "x-cache",
"value": "Error from cloudfront"
},
{
"name": "via",
"value": "1.1 275132367c30f17c9825826491390fe3.cloudfront.net (CloudFront)"
},
{
"name": "x-amz-cf-id",
"value": "Ag_JzYYNMVJLMlz9Dd8yDgS1qDCRFlihzlCauDXOE0-fojAPQLQNQQ=="
}
It would seem that the dist has no access, but I did the same OAID as with the first origin, I checked the bucket permissions allow the OAID, and the first origin is working fine.
Maybe it's some slow propagation issue about adding an S3 origin?
My application
Im trying to build a fairly simple application using Laravel as a RESTfull API server and Ember as my fontend framework
My backend server lives on http://api.example.com/1.0/
My frontend lives on http://www.example.com/
Ive just started this project so I'm only a few hours into the devlopment, so there might be some configuration issues that Im missing here, but anyway.
Im trying to get a list of products from my server and display them in my ember application using ember-data
Im running ember 2.0.2 and ember-data 2.0.0
Im getting the following error in chrome.
Error
Error while processing route: product Cannot read property 'replace'
of undefined TypeError: Cannot read property 'replace' of undefined
at Object.func (http://localhost:4200/assets/vendor.js:45832:15)
at Object.Cache.get (http://localhost:4200/assets/vendor.js:23421:36)
at decamelize (http://localhost:4200/assets/vendor.js:45874:29)
at Object.func (http://localhost:4200/assets/vendor.js:45789:12)
at Object.Cache.get (http://localhost:4200/assets/vendor.js:23421:36)
at Object.dasherize (http://localhost:4200/assets/vendor.js:45878:35)
at ember$data$lib$system$normalize$model$name$$normalizeModelName (http://localhost:4200/assets/vendor.js:66295:27)
at ember$data$lib$serializers$json$serializer$$default.extend.modelNameFromPayloadKey
(http://localhost:4200/assets/vendor.js:75184:67)
at ember$data$lib$serializers$json$serializer$$default.extend._normalizeResourceHelper
(http://localhost:4200/assets/vendor.js:75064:30)
at Array.map (native)
Files
In ember I have generated a product resource giving my the following files.
// app/routes/product.js
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.findAll('product');
}
});
// app/model/product.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr(),
price: DS.attr()
});
JSON response
The Json returned from my api http://api.example.com/1.0/products
{
"data": [
{
"id": "1",
"name": "dolores",
"price": "59015",
"created_at": "2015-09-06 16:18:13",
"updated_at": "2015-09-06 16:18:13"
},
{
"id": "2",
"name": "debitis",
"price": "57449",
"created_at": "2015-04-07 14:45:16",
"updated_at": "2015-04-07 14:45:16"
},
...
]
}
This is adapter/serializer error, it's not descriptive though. Payload is wrong for the JSONAPIAdapter (the default adapter)
You should modify payload as:
{
"data": [
{
"id": "1",
"type": "products",
"attributes": {
"name": "dolores",
"price": "59015",
"created-at": "2015-09-06 16:18:13",
"updated-at": "2015-09-06 16:18:13"
}
}, {
"id": "2",
"type": "products",
"attributes": {
"name": "debitis",
"price": "57449",
"created-at": "2015-04-07 14:45:16",
"updated-at": "2015-04-07 14:45:16"
}
}]
}
or use RESTAdapter/Serializer with a such payload:
{
"products": [{
"id": "1",
"name": "dolores",
"price": "59015",
"created_at": "2015-09-06 16:18:13",
"updated_at": "2015-09-06 16:18:13"
}, {
"id": "2",
"name": "debitis",
"price": "57449",
"created_at": "2015-04-07 14:45:16",
"updated_at": "2015-04-07 14:45:16"
}]
}
If you can't change response payload, you have to customize Adapter/Serializer pair. Check related questions on SO.
Links for details:
Guides
JSONAPISerializer payload example
RESTSerializer payload example
The same issue happened to me.
Version details:
DEBUG: -------------------------------
ember.debug.js:DEBUG: Ember : 1.11.0
ember.debug.js:DEBUG: Ember Data : 1.0.0-beta.14.1
ember.debug.js:DEBUG: jQuery : 1.11.1
DEBUG: -------------------------------
Cause of the issue:
It seems that adding attributes to Handlebars elements using inline if helpers also causes the issue (whether the property that you are using on your condition is true, false, null or undefined).
my-component.hbs
<button class="btn btn-solve-my-problems" {{action 'solveIt}} {{if isNotSolvable 'disabled'}}>
Solve my problems!
</button>
my-component.coffee
isNotSolveble: (->
if #get('somethingMeaningful') then true else null
).property('somethingMeaningful')
The solution:
Instead of using the inline if helper, I am just attributing the value of isNotSolvable to the disabled attribute (nothing was changed on the my-component.coffee file).
my-component.hbs
<button class="btn btn-solve-my-problems" {{action 'solveIt}} disabled="{{isNotSolvable}}">
Solve my problems!
</button>
PS.: the null being returned from the method has to do with the manipulation of the disabled attribute. It has nothing to do with the issue reported on this thread. It only reflects my scenario and how I've solved the issue. More details here.