【问题标题】:How to use large numbers in angular 5+?如何在角度 5+ 中使用大数?
【发布时间】:2019-02-10 11:42:37
【问题描述】:

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

statusID 应该是: XXXXXXXXXXXXXXXX573

但它是通过键入脚本为: 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,例如

XXXXXXXXXXXXXXXXXX100 XXXXXXXXXXXXXXXX200 XXXXXXXXXXXXXXXX300

在 Api 控制器中,我使用的是 LinqToTwitter Status objectStatus object 中的属性类型是 public ulong SinceID { get; set; } 并且我已经设置了 TS Model 的属性是 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));
  }

【问题讨论】:

  • 为什么不使用字符串?
  • 我正要提出同样的建议:P
  • 我试过字符串。结果相同。
  • 是的,控制台显示错误的数字。除了 statusID 有 19 位数字之外,所有其他数据都很好。
  • 是的!,网络>GetAllTweetsByNamePost> 预览。也有错误的值。

标签: angular typescript linq-to-twitter


【解决方案1】:

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

【讨论】:

  • 好的,谢谢,值太长了,因为我使用的是具有 ulong 属性的 LinqToTwitter 模型。我创建了我的Search 模型的缩小版本并将statusID 更改为字符串。我意识到我必须更改 Api 端的类型,因为有人在上面的 cmets 中建议检查网络选项卡中的数据并且那里的数据也错误。
  • @Decoder94 是的。那是我的建议。当我意识到 JavaScript 有这个限制时,我删除了这个问题。
猜你喜欢
  • 1970-01-01
  • 2019-02-27
  • 2019-01-18
  • 2018-10-12
  • 2021-07-02
  • 2016-08-11
  • 2019-05-13
  • 2018-05-16
  • 1970-01-01
相关资源
最近更新 更多