Parse.com query.equalTo错误处理

Parse.com query.equalTo error processing

本文关键字:错误 处理 equalTo query com Parse      更新时间:2023-09-26

我正试图查询Parse.com数据库,看看某个字段是否可用。然后,我希望根据变量是否存在于数据库中来执行某些操作。

以下是完整的生产功能:

function getProduct() {
        var Products = Parse.Object.extend("Products");
        ProductEAN = 76130347394081;
        output = "";
        var query = new Parse.Query(Products);
        query.equalTo("EANBarcode", ProductEAN );
        query.find({
            success: function(results) {
                var no = results[0].get("EANBarcode");
                var title = results[0].get("Name");
                output += "[" + no + "] " + title;
                console.log( "Output is: " + output );
            },
            error: function(error) {
                alert(error.message);
            }
        });
    }

如果存在ProductEAN,那么成功功能将按预期工作。如果它不存在,而不是运行错误函数,我会得到一个控制台输出,上面写着:

"未捕获类型错误:无法读取未定义"的属性"get"

我遵循本指南:https://www.youtube.com/watch?v=2TVmgEJfbno

我有点不明白为什么这不起作用。有人有这方面的经验吗?

find()方法的错误回调只有在执行中出现错误时才会被调用。在不存在ProductEAN的情况下,它仍然是一个成功的查询,但没有匹配的记录。这意味着它调用成功回调,结果为空数组。因此,结果[0]是未定义的,这解释了控制台错误输出。

您可能需要更改成功回调以验证results.length并做出适当的决定。类似这样的东西:

query.find({
            success: function(results) {
               if(results.length > 0){
                var no = results[0].get("EANBarcode");
                var title = results[0].get("Name");
                output += "[" + no + "] " + title;
                console.log( "Output is: " + output );
              }
              else{
                 console.log('No matching records');
              }
            },
            error: function(error) {
                alert(error.message);
            }
        });