解析服务器查询对象未返回任何结果
Parse server query object is returning no results
我在查询解析服务器时遇到问题。我通过仪表板创建了一个名为 Tickets 的 class 和一行。当我使用 curl 时,我可以查询并获取该行。但是,当我尝试从 HTML 页面在 JavaScript 中执行此操作时,我得到的结果为零。
我从 myLogin 调用 getTickets() 函数,它是通过单击按钮调用的。 getTickets() 中的最终 console.log() 调用打印 "Results: ",没有其他内容。
顺便说一句,getTickets() 函数是根据 Parse 文档中的 examples 建模的。
在此先感谢您的帮助。
这是我的代码:
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 调用 returns 以下内容(如果有用的话):
{"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"}}]}%
我找到了答案。我不明白 Parse.Query.find() returns 是一个数组。 getTickets() 中的 console.log() 调用表明 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;
}
我会更改一些小的东西:
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
循环转换为 for-of loop。我不会在 getTickets
中发现错误,而是在登录功能中发现错误。如果登录或获取门票失败,return
记录错误后,因为没有其他事情可做。
我在查询解析服务器时遇到问题。我通过仪表板创建了一个名为 Tickets 的 class 和一行。当我使用 curl 时,我可以查询并获取该行。但是,当我尝试从 HTML 页面在 JavaScript 中执行此操作时,我得到的结果为零。
我从 myLogin 调用 getTickets() 函数,它是通过单击按钮调用的。 getTickets() 中的最终 console.log() 调用打印 "Results: ",没有其他内容。
顺便说一句,getTickets() 函数是根据 Parse 文档中的 examples 建模的。
在此先感谢您的帮助。
这是我的代码:
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 调用 returns 以下内容(如果有用的话):
{"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"}}]}%
我找到了答案。我不明白 Parse.Query.find() returns 是一个数组。 getTickets() 中的 console.log() 调用表明 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;
}
我会更改一些小的东西:
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
循环转换为 for-of loop。我不会在 getTickets
中发现错误,而是在登录功能中发现错误。如果登录或获取门票失败,return
记录错误后,因为没有其他事情可做。