parse.com get无法读取属性" indexOf'未定义的

时间:2015-09-08 08:51:01

标签: javascript jquery parse-platform

我在网站上显示Parse的一些结果,但目前循环正在中断,因为并非所有列都包含值。

var warningCreator = object.get("creator").get("country");

在某些情况下,用户尚未选择其国家/地区,从而导致此错误。

我想知道在调用之前是否有任何方法可以检查结果是否未定义。

对于iOs我发现:

if ([object objectForKey:@"keyPath"]) {
  // the object has a value for key keyPath
}

javaScript SDK有什么类似的东西吗?

*编辑(为清晰起见,添加了更多代码):

        var WarningPoints = Parse.Object.extend("Warning_Point");
        var query = new Parse.Query("Warning_Point");

        query.include("creator");
        query.include("position");

        query.find({
            success: function(results) {
                markerCount = 0;

                if (results.length == 0) {
                    alert('There are Warning Points found for specified parameters.')
                };

                for (var i = 0; i < results.length; i++) {

                    var object = results[i];

                    var warningCreator = object.get("creator").get("country");

                    var warningLat = object.get("position").get("lat");
                    var warningLong = object.get("position").get("long");

                    if((object.get("position").get("address"))!=null){
                        warningAddress = object.get("position").get("address");
                    }

                    console.log(warningAddress);

                    var warningName = object.get("name");

                }
            },
            error: function(error) {
                alert("Error: " + error.code + " " + error.message);
            }
        });

控制台中的确切错误是:

未捕获的TypeError:无法读取属性&#39; get&#39;未定义的 - 错误的行是:warningCreator = object.get(&#34; creator&#34;)。get(&#34; country&#34;);

2 个答案:

答案 0 :(得分:1)

if(object['keyPath']!=null){
 //the object has a value for key keyPath
}

其中object是包含从parse中检索的数据的变量。 您可以更准确地检查空值。

在你的情况下:

if(object.get("creator")!=null && object.get("creator").get("country")!=null){
 //the fields have a value
}
else{
 //Some field is null
}

您需要在语句中检查每个.get(&#34;字段&#34;),因为每个字段都可以为空。

你有2个嵌套的.get()。get(),可能第一个返回null,因此它引发了异常。

答案 1 :(得分:1)

感谢您的帮助。

有时你只需要一些新鲜的眼睛来重新审视你的观点。

if(object.get("creator") != null ){
                    if(object.get("creator").get("country") != null ){
                        var warningCreator = object.get("creator").get("country");
                    }
                }

                if(object.get("position") != null ){
                    if(object.get("position").get("lat") != null ){
                           var warningLat = object.get("position").get("lat");
                    }
                }

                if(object.get("position") != null ){
                    if(object.get("position").get("long") != null ){
                          var warningLong = object.get("position").get("long");
                    }
                }

                if(object.get("position") != null ){
                    if(object.get("position").get("address") != null ){
                         var warningAddress = object.get("position").get("address");
                    }
                }