Javascript Angular4-如何检查Twitter媒体密钥是否存在或未定义
在…的基础上建造。。。我希望能够返回一个帐户的时间线的最后5条推文,以及他们可能附加的任何图像。我的问题是,在对Twitter的API进行搜索调用时,返回的一些tweet JSON根本不包含entities.media.media_url键。如果我将entities.media.media_url作为调用的一部分,并且tweet不包含任何附件,则会中断整个请求,并且根本不会呈现任何tweet。在呈现请求之前,是否可以检查tweet是否包含该信息?例如,在尝试解析这两条推文时: tweet1(无图像) tweet2(包含附加图像) 我有一个node.js后端处理搜索调用的大部分工作(以下), 我的tweets.component.ts会抓取元素并将它们分配给前端要插值的变量 tweets.component.tsJavascript Angular4-如何检查Twitter媒体密钥是否存在或未定义,javascript,json,angular,twitter,Javascript,Json,Angular,Twitter,在…的基础上建造。。。我希望能够返回一个帐户的时间线的最后5条推文,以及他们可能附加的任何图像。我的问题是,在对Twitter的API进行搜索调用时,返回的一些tweet JSON根本不包含entities.media.media_url键。如果我将entities.media.media_url作为调用的一部分,并且tweet不包含任何附件,则会中断整个请求,并且根本不会呈现任何tweet。在呈现请求之前,是否可以检查tweet是否包含该信息?例如,在尝试解析这两条推文时: tweet1(无图
import { Component, OnInit, Input } from '@angular/core';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { Ng4TwitterTimelineModule } from 'ng4-twitter-timeline/lib/index';
import { Ng4TwitterTimelineService } from 'ng4-twitter-timeline/lib/index';
import { Http, Headers } from '@angular/http';
import { NgModel, NgForm, FormsModule } from '@angular/forms';
@Component({
selector: 'app-tweets',
templateUrl: './tweets.component.html',
styleUrls: ['./tweets.component.scss'],
})
export class TweetsComponent implements OnInit {
searchquery = 'musechat';
tweetsdata;
screen_name;
user;
profile_img_url;
user_id;
asset_img_url;
// icon = this.tweetsdata[0].user.entities.profile_image_url;
constructor (private http: Http) {}
ngOnInit() {
this.makecall();
this.searchcall();
}
makecall() {
const headers = new Headers();
headers.append('Content-Type', 'application/X-www-form-urlencoded');
this.http.post('http://localhost:3000/authorize', {headers: headers}).subscribe((res) => {
// console.log(res);
});
}
searchcall() {
const headers = new Headers();
// const searchterm = 'query=' + this.searchquery;
const searchterm = 'query=from%3Adailymuse%20%23' + this.searchquery;
headers.append('Content-Type', 'application/X-www-form-urlencoded');
this.http.post('http://localhost:3000/search', searchterm, {headers: headers}).subscribe((res) => {
this.tweetsdata = [
res.json().data.statuses[0],
res.json().data.statuses[1],
res.json().data.statuses[2],
res.json().data.statuses[3],
res.json().data.statuses[4],
// res.json().data.statuses[5],
];
console.log(this.tweetsdata);
this.screen_name = this.tweetsdata[0].user.screen_name;
this.user = this.tweetsdata[0].user.name;
this.profile_img_url = this.tweetsdata[0].user.profile_image_url_https;
this.user_id = this.tweetsdata[0].user.id_str;
});
}
}
}
tweets.component.html
<div class="twitter-container">
<div class="twitter-carousel">
<div class="twitter-header">
<a class="tw-header" href="http://twitter.com/intent/user?user_id={{user_id}}" target="_blank">
<img class="twitter-icon" src={{profile_img_url}}>
<span>{{user}}</span>
<span class="twitter-screen">@{{screen_name}}</span>
</a>
</div>
<hr>
<div class="tweet-container">
<div *ngFor="let item of tweetsdata" class="tweets-card">
<div class="tweet-text">
<p class="tweet-date">{{item.created_at | slice:0:10}}</p>
<p>{{item.text}}</p>
<!-- <div *ngIf="item.entities.media[0].media_url" class="tweet-img"> -->
<!-- <img [src]=item.entities.media[0].media_url/> --> <!-- either of these break the code if there is a tweet that doesn't contain an attached image -->
<div>
<p>{{getImage()}}</p>
</div>
<div class="interact-tweet">
<a href="https://twitter.com/intent/tweet?in_reply_to={{item.id_str}}" target="_blank"><i class="fa fa-reply" aria-hidden="true"></i></a>
<a href="https://twitter.com/intent/retweet?tweet_id={{item.id_str}}" target="_blank"><i class="fa fa-retweet" aria-hidden="true"></i></a>
<a href="https://twitter.com/intent/like?tweet_id={{item.id_str}}" target="_blank"><i class="fa fa-heart" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
</div>
</div>
{{item.created_at|slice:0:10}
{{item.text}
{{getImage()}}
import { Component, OnInit, Input } from '@angular/core';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { Ng4TwitterTimelineModule } from 'ng4-twitter-timeline/lib/index';
import { Ng4TwitterTimelineService } from 'ng4-twitter-timeline/lib/index';
import { Http, Headers } from '@angular/http';
import { NgModel, NgForm, FormsModule } from '@angular/forms';
@Component({
selector: 'app-tweets',
templateUrl: './tweets.component.html',
styleUrls: ['./tweets.component.scss'],
})
export class TweetsComponent implements OnInit {
searchquery = 'musechat';
tweetsdata;
screen_name;
user;
profile_img_url;
user_id;
asset_img_url;
// icon = this.tweetsdata[0].user.entities.profile_image_url;
constructor (private http: Http) {}
ngOnInit() {
this.makecall();
this.searchcall();
}
makecall() {
const headers = new Headers();
headers.append('Content-Type', 'application/X-www-form-urlencoded');
this.http.post('http://localhost:3000/authorize', {headers: headers}).subscribe((res) => {
// console.log(res);
});
}
searchcall() {
const headers = new Headers();
// const searchterm = 'query=' + this.searchquery;
const searchterm = 'query=from%3Adailymuse%20%23' + this.searchquery;
headers.append('Content-Type', 'application/X-www-form-urlencoded');
this.http.post('http://localhost:3000/search', searchterm, {headers: headers}).subscribe((res) => {
this.tweetsdata = [
res.json().data.statuses[0],
res.json().data.statuses[1],
res.json().data.statuses[2],
res.json().data.statuses[3],
res.json().data.statuses[4],
// res.json().data.statuses[5],
];
console.log(this.tweetsdata);
this.screen_name = this.tweetsdata[0].user.screen_name;
this.user = this.tweetsdata[0].user.name;
this.profile_img_url = this.tweetsdata[0].user.profile_image_url_https;
this.user_id = this.tweetsdata[0].user.id_str;
});
}
}
}
<div class="twitter-container">
<div class="twitter-carousel">
<div class="twitter-header">
<a class="tw-header" href="http://twitter.com/intent/user?user_id={{user_id}}" target="_blank">
<img class="twitter-icon" src={{profile_img_url}}>
<span>{{user}}</span>
<span class="twitter-screen">@{{screen_name}}</span>
</a>
</div>
<hr>
<div class="tweet-container">
<div *ngFor="let item of tweetsdata" class="tweets-card">
<div class="tweet-text">
<p class="tweet-date">{{item.created_at | slice:0:10}}</p>
<p>{{item.text}}</p>
<!-- <div *ngIf="item.entities.media[0].media_url" class="tweet-img"> -->
<!-- <img [src]=item.entities.media[0].media_url/> --> <!-- either of these break the code if there is a tweet that doesn't contain an attached image -->
<div>
<p>{{getImage()}}</p>
</div>
<div class="interact-tweet">
<a href="https://twitter.com/intent/tweet?in_reply_to={{item.id_str}}" target="_blank"><i class="fa fa-reply" aria-hidden="true"></i></a>
<a href="https://twitter.com/intent/retweet?tweet_id={{item.id_str}}" target="_blank"><i class="fa fa-retweet" aria-hidden="true"></i></a>
<a href="https://twitter.com/intent/like?tweet_id={{item.id_str}}" target="_blank"><i class="fa fa-heart" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
</div>
</div>
if (entities.media) // Code if it exists here
else // Code if it doesn't here