Parse.com query.equalTo错误处理

时间:2016-01-01 19:00:53

标签: javascript parse-platform

我试图查询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,则成功功能按预期工作。如果它不存在,而不是运行错误函数,我得到一个控制台输出,说明如下:

  

"未捕获的TypeError:无法读取属性' get'未定义"

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

我有点不知道为什么这不起作用。有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:2)

只有在执行中出现错误时才会调用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);
            }

        });