Javascript Parse.com query.find success回调中的参数
提前谢谢你的帮助。 我正在使用Phonegap和Javascript进行一个练习助手。长话短说:我需要使用Parse.com来存储一些乐高迷你们的信息。我现在遇到的问题主要是由于我缺乏Javascript方面的经验 我正在努力让用户在数字上添加标签。用户输入它们,用逗号分隔,然后我拆分字符串。没问题 现在,我需要将尚不存在的标记添加到我的数据库中。为此,我搜索具有该描述的任何标记(使用query.find),然后,如果它存在,我不创建它,我只是修改关系。如果它不存在,我创建它,然后修改关系 我的问题是:我似乎无法从query.find的成功回调中访问标记描述(字符串)。我很确定这是因为范围太广。除了结果数组之外,还有没有其他方法可以通过成功回调访问变量 我目前的代码如下:Javascript Parse.com query.find success回调中的参数,javascript,cordova,callback,parse-platform,Javascript,Cordova,Callback,Parse Platform,提前谢谢你的帮助。 我正在使用Phonegap和Javascript进行一个练习助手。长话短说:我需要使用Parse.com来存储一些乐高迷你们的信息。我现在遇到的问题主要是由于我缺乏Javascript方面的经验 我正在努力让用户在数字上添加标签。用户输入它们,用逗号分隔,然后我拆分字符串。没问题 现在,我需要将尚不存在的标记添加到我的数据库中。为此,我搜索具有该描述的任何标记(使用query.find),然后,如果它存在,我不创建它,我只是修改关系。如果它不存在,我创建它,然后修改关系 我的
var Figure = Parse.Object.extend("Figure");
var Tag = Parse.Object.extend("Tag");
var nombre = $('#nombre').val();
var serie = $('#serie').val();
var figure = new Figure({"Name":nombre,"Series":serie});
var tags = $('#tags').val();
res = tags.split(","); //split the
figure.save().then(function() {
for (var i = 0; i < res.length; i++) { //for each tag
var query = new Parse.Query(Tag); //create the query.
query.equalTo("Description", res[i]);
query.find( {//execute query
success: function(results, res[i]) {
if (results.length > 0){ //if there are results.
var tag = results[0]; //get the tag
var relation_tag = tag.relation("figures"); //get the relation
relation_tag.add(figure); //add figure to relation
tag.save();
}
else { //if there are no results, the tag does not exist.
new_tag = new Tag({"Description":res[i]});
//ABOVE THIS LINE: res[i] is always undefined.
var relation_tag = new_tag.relation("figures"); //get the relation
relation_tag.add(figure); //add the figure
new_tag.save();
}
},
//error with query
error: function() {
alert("ERROR");
}
});
}
}, function(error) {
alert("No se pudo guardar la figura");
});
var Figure=Parse.Object.extend(“Figure”);
var Tag=Parse.Object.extend(“Tag”);
var nombre=$('#nombre').val();
var serie=$('#serie').val();
var图形=新图形({“名称”:nombre,“系列”:serie});
var tags=$('#tags').val();
res=标签。拆分(“,”)//分开
图.save().then(函数()){
对于(var i=0;i0){//如果有结果。
var tag=results[0];//获取标记
var relation_tag=tag.relation(“数字”);//获取关系
关系_tag.add(图);//将图添加到关系
tag.save();
}
else{//如果没有结果,则标记不存在。
new_tag=new tag({“Description”:res[i]});
//在这一行上面:res[i]总是未定义的。
var relation_tag=new_tag.relation(“图”);//获取关系
关系_tag.add(图);//添加图
新建_标记。保存();
}
},
//查询错误
错误:函数(){
警报(“错误”);
}
});
}
},函数(错误){
警报(“无东南部guardar la figura”);
});
在成功回调中,res[i]总是未定义的,我假设这是由于作用域的原因。这是异步Javascript编程中非常常见的问题。你正在做这样的事情:
var Tag = Parse.Object.extend("Tag");
var query = new Parse.Query(Tag);
for (var i = 0; i < array.length; i++) {
anAsyncFunction(function(result) { // inner function
doSomethingWith(array[i]);
}
}
由于IIFE立即被调用,因此当前值为i
被传递并存储到j
中,当内部函数执行时,它使用正确的值
因此,在您的情况下,这应该是可行的:
success: (function(j) { // IIFE
return function(results) {
if (results.length > 0) {
var tag = results[0];
var relation_tag = tag.relation("figures");
relation_tag.add(figure);
tag.save();
}
else { //if there are no results, the tag does not exist.
new_tag = new Tag({"Description":res[j]}); // j instead of i
var relation_tag = new_tag.relation("figures");
relation_tag.add(figure);
new_tag.save();
}
}
})(i) // pass "value of i"
如果您愿意,还可以将描述本身而不是索引传递给IIFE(我想我会这样做):
这是异步Javascript编程中非常常见的问题。你正在做这样的事情:
for (var i = 0; i < array.length; i++) {
anAsyncFunction(function(result) { // inner function
doSomethingWith(array[i]);
}
}
由于IIFE立即被调用,因此当前值为i
被传递并存储到j
中,当内部函数执行时,它使用正确的值
因此,在您的情况下,这应该是可行的:
success: (function(j) { // IIFE
return function(results) {
if (results.length > 0) {
var tag = results[0];
var relation_tag = tag.relation("figures");
relation_tag.add(figure);
tag.save();
}
else { //if there are no results, the tag does not exist.
new_tag = new Tag({"Description":res[j]}); // j instead of i
var relation_tag = new_tag.relation("figures");
relation_tag.add(figure);
new_tag.save();
}
}
})(i) // pass "value of i"
如果您愿意,还可以将描述本身而不是索引传递给IIFE(我想我会这样做):
对不起,我好像漏掉了一部分代码。我有。谢谢对不起,我好像漏掉了一部分代码。我有。谢谢您确定有符合条件的数据吗?代码看起来很好。您确定有符合条件的数据吗?代码看起来不错