Объект запроса сервера разбора не возвращает результатов - PullRequest
0 голосов
/ 16 января 2020

У меня проблемы с запросом к серверу разбора. Я создал класс с именем Билеты и одну строку через панель инструментов. Когда я использую curl, я могу запросить и получить строку. Однако, когда я пытаюсь сделать это в JavaScript со страницы HTML, я получаю ноль результатов.

Я вызываю функцию getTickets () из myLogin, которая вызывается нажатием кнопки. Последний вызов console.log () в getTickets () выводит «Results:» и ничего больше.

Кстати, функция getTickets () смоделирована на examples в документации Parse.

Заранее спасибо за помощь.

Вот мой код:

    Parse.initialize("-REDACTED-", "");
    Parse.serverURL = "-REDACTED-";

    function myLogin(uname, psw) {
      var uname = document.getElementById("uname").value;
      var psw = document.getElementById("psw").value;
      const user = Parse.User.logIn(uname, psw);
      var cUser = Parse.User.current();

      if (cUser) {
        console.log(
          "Hey! The login worked!" + " Username: " + cUser.get("username")
        );
        getTickets();
      } else {
        alert("Womp, womp. The login failed.");
      }
    }

    async function getTickets() {
      const Ticket = Parse.Object.extend("Ticket");
      const query = new Parse.Query(Ticket);
      const res = await query.find();
      console.log("Results: " + res);
    }

Вызов curl возвращает следующее, если это полезно:

{"results":[{"objectId":"RuFPxSjigL","user":{"__type":"Pointer","className":"_User","objectId":"uGwwN99EX9"},"createdAt":"2020-01-15T20:47:45.116Z","updatedAt":"2020-01-15T20:48:05.203Z","event":{"__type":"Pointer","className":"Event","objectId":"BdGQSPhK0J"}}]}%

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Существуют незначительные вещи, которые я бы изменил:

Parse.initialize("imAppId", "");
Parse.serverURL = "https://www.immedia.co/parse/";

async function imLogin(uname, psw) {
  const uname = document.getElementById("uname").value;
  const psw = document.getElementById("psw").value;
  let user;
  try {
    user = await Parse.User.logIn(uname, psw);
  } catch (err) {
    alert("Login failed: username or password are not valid: ", err);
    return; // if log in fails, you can't access the user's tickets
  }

  let tix;
  try {
    tix = await getTickets();
    alert("Successfully retrieved " + tix.length + " tickets.");
  } catch (err) {
    console.error("Error getting tickets: ", err);
    return;
  }

  for (const obj of tix) {
    console.log(
      "ticket.id: " + obj.id + " with user.id " + obj.get("user")
    );
  }
}

async function getTickets() {
  const Ticket = Parse.Object.extend("Ticket");
  const query = new Parse.Query(Ticket);
  return await query.find();
}

Вы можете преобразовать for l oop в для-l oop. Я бы не поймал ошибку в getTickets, но в функции входа в систему. И если войти или получить билеты не удалось, return после регистрации ошибки, так как больше ничего не нужно делать.

0 голосов
/ 17 января 2020

Я нашел ответ. Я не понял, что Parse.Query.find () возвращает массив. Вызов console.log () в getTickets () показал, что res не определено, и я подумал, что ничего не возвращалось. Я обновил свой код, чтобы вести себя лучше. Я новичок в JavaScript, буду признателен за любые предложения по улучшению кода или стиля.

    Parse.initialize("imAppId", "");
    Parse.serverURL = "https://www.immedia.co/parse/";

    async function imLogin(uname, psw) {
      var uname = document.getElementById("uname").value;
      var psw = document.getElementById("psw").value;
      var user;
      try {
        user = await Parse.User.logIn(uname, psw);
      } catch (err) {
        alert("Login failed: username or password are not valid: ", err);
      }

      const tix = await getTickets();

      for (let i = 0; i < tix.length; i++) {
        var obj = tix[i];
        console.log(
          "ticket.id: " + obj.id + " with user.id " + obj.get("user")
        );
      }

      async function getTickets() {
      const Ticket = Parse.Object.extend("Ticket");
      const query = new Parse.Query(Ticket);
      var tix = [];
      try {
        tix = await query.find();
        alert("Successfully retrieved " + tix.length + " tickets.");
      } catch (err) {
        console.error("Error getting tickets: ", err);
      }
      return tix;
    }
...