我在网站上显示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;);
答案 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");
}
}