首页 > 解决方案 > 如何在角度 5+ 中使用大数?

问题描述

我将 Angular 5 与 .Netcore 2.0 一起使用。我正在使用 API 控制器来处理推文(LinqToTwitter)。推文来自控制器的我的打字稿,除了statusID19 位数长之外,一切都很好。

statusID应该是:XXXXXXXXXXXXXXXXXX573

但它是通过键入脚本为:XXXXXXXXXXXXXXXX600

API控制器:

[HttpPost("[action]")]
public async Task<Search> GetAllTweetsByNamePost([FromBody] SearchQuery searchQuery)
{
    searchVal = searchQuery.Name;
    Twitter twit = new Twitter();
    twit.Initialise();
    var t = await twit.Fetch(searchVal, 50, true, SearchType.Search);
    return t[0];
}

当我检查Status控制器中的 ID 时,它显示了正确的 ID,但是它到达 TS 的时间statusID不同,并且数字中有一个模式。

前 16 位数字正确,后 3 位递增 100,例如

XXXXXXXXXXXXXXXX100 XXXXXXXXXXXXXXXX200 XXXXXXXXXXXXXXXX300

在 Api 控制器中,我使用的是LinqToTwitter Status object. 中的属性类型Status object是公共的ulong SinceID { get; set; },我已经设置了 TS 模型的属性是statusID: any;

getSocialDataTwitter(searchQuery) {
    const headers = new HttpHeaders().set('content-type', 'application/json');
    return this.http.post<LeftOperatorPaneltwitter>(this.baseUrl + 'api/OperationData/GetAllTweetsByNamePost', '{"Name":"' + searchQuery + '"}', { headers }).subscribe(result => {
      this.tweets = result;
      result.statuses.forEach(search => {
        console.log(search.statusID + ' This is my Status ID');
      })
    }, error => console.error(error));
  }

标签: angulartypescriptlinq-to-twitter

解决方案


Javascript 无法处理这种长度的数字。据此最大安全整数值为:9007199254740991。我建议将您的 ID 表示为string.


推荐阅读