【问题标题】:Cannot get the full json with request json无法使用请求 json 获取完整的 json
【发布时间】:2017-09-20 11:17:26
【问题描述】:

当我实际输入 XXXX YYYY 时,我会在我的 html 页面中获取玩家 json 代码(大约 150 个值)。 但是当我尝试在玩家列表上使用一个函数时,它为什么不包含所有 150 个值,并且尝试将我抛出到 catch 错误部分,我可以看到玩家 json 里面只有 100 个玩家。

知道可能是什么问题吗?

if(yourID === "XXXX" && targetID === "YYYY"){
    return players;
}
try{
    if(isUserAlive(yourID)){
        if(targetID === ""){
            return userTargetInfo(yourID);
        }
        var checkForMatch = getUserTarget(yourID);
        if(checkForMatch === targetID){
            killTarget(targetID);
            getUser(yourID).targetID = getTargetTarget(targetID);
            addScore(yourID);
            return userTargetInfo(yourID);
            //return getTargetTargetStats(targetID);
        }else{
            return "INVALID";
        }
    }else{
        return "DEAD"
    }
}catch(err){
    console.log("Error",console.log(players))
    return "INVALID"    
}

编辑:由于我没有时间,我创建了 2 个网站并将数据库划分为 2 个不同的数据库,因此每个数据库都可以在 100 人以下工作。此时没有时间修复错误。所以我不会选择解决方案,因为我不会很快尝试。 感谢您的所有帮助!

【问题讨论】:

  • 很难从您在此处提供的内容中分辨出来,但我猜您所请求的任何 API 都在对其玩家数据使用分页,即它们只返回一定数量的结果每个请求。有api文档可以参考吗?
  • 如果您从邮递员 (getpostman.com) 中访问相同的 url,您会得到所有值吗?可能是服务器端的限制?
  • Firebase 数据库不会截断返回的子节点数,除非您指定 limitToFirstlimitToLast 参数。如果没有看到minimal, complete code sample that reproduces the problem,就不可能说出发生了什么。创建此类 MCVE 的一种方法是在 jsbin 中重现问题,然后从那里共享代码和链接。
  • 通过邮递员,我实际上得到了所有的内容。而且我也不能真正提供 json 链接,因为它包含我无法公开分享的信息
  • 您确定使用 Postman 提出的请求完全相同吗? IE。对同一个 URL 的 GET 请求,仅此而已?

标签: javascript json node.js firebase


【解决方案1】:

检查您正在使用的链接 api,它可能集成了分页。在这种情况下,我将返回一定数量的第一个对象,然后您可以重新请求获取下一批。他们很可能可以选择更改返回的对象数(有时是最大值)

【讨论】:

    【解决方案2】:

    我很确定 body 会作为字符串返回。尝试将其更改为对象,以便您可以更轻松地使用它。

    变化:

     players = body;
    

    到:

     players = JSON.parse(body);
    

    我不确定您的其余代码,但您可能希望在您的 players 变量声明中添加 var,因为这看起来像是您第一次设置它。

    研究:命名空间冲突

    如果您仍然遇到问题,请编辑您的问题以包含您从console.log(JSON.parse(body)); 收到的回复。您将能够获得更多有用的答案。就个人而言,我很想看到以下键:

     { query:
        { count: 1,
          created: '2017-04-23T22:03:31Z',
          lang: 'en-US',
          results: { channel: [Object] } } }
    

    如果它是分页的,您应该会在其中看到某种cursor 键,或prevnext 以及某种totalCount

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2019-03-06
      • 1970-01-01
      相关资源
      最近更新 更多