【发布时间】:2018-07-05 17:08:50
【问题描述】:
我的第二个问题与我的第一个 question 有关。答案只是帮助我更多地了解我的问题。
我的情况:
我在 parseplattform 中有一个表格,用于存储我的用户照片。用户应该能够删除选定的那些。所以我在每张照片下都做了一个复选框,它会返回 picID。 所以下一步是在我的表格中找到所有选定的图片并“销毁”它们。
这是我的代码片段,用于查找所选图片:
var inputs = document.querySelectorAll("input[type='checkbox']");
for(var i = 0; i < inputs.length; i++) {
if(inputs[i].checked == true){
var imgForDelPromise = new Promise(function (resolve) {
userPics_query.get(inputs[i].id, {
success: function(picForDelete) {
alert(picForDelete.id);
resolve(picForDelete);
},
error: function(picForDelete, error) {
alert("Error: " + error.code + " " + error.message);
}
});
});
}
}
我的问题:
如果我从 12 张图片中选择第 1、5 和 8 张图片,我希望我也会取回第 1、5 和 8 张图片的 ID 但是我总是得到最后一个与我选择的项目一样多。在本例中为 3 乘以 8。
就像我在第一个问题中建议的那样,我用承诺尝试过,但没有帮助。
所以我问了谷歌并得到了this,但它也没有帮助我。
我希望你能理解我的问题和问题,并希望你能帮助我。
也许有一种更简单的方法,例如 query.equalTo(),我可以传递一个包含不同元素的数组并返回一个包含不同对象的数组。但我还没有找到。
谢谢。
更新:
问题仍然存在,我尝试再详细说明一下。 例如:
var ids = Array.from(document.querySelectorAll("input[type='checkbox']"))
.filter( //only checked inputs
function(input) { return input.checked; }
).map( //map to a promise
function(input) {
return input.id;
}
);
console.log(ids);
ids.forEach(function(id) {
userPics_query.get(id)
.then(function(picObject) {
console.log(picObject.id);
})
.then(function(error) {
console.log(error);
});
});
我试图通过您的回答构建的内容给了我以下日志:
Array [ "x2WSASwKWI", "NuhRXja0PL" ]
NuhRXja0PL
NuhRXja0PL
我的问题: 我不知道如何遍历数组并为每个元素返回来自服务器的请求,因为每个循环都首先出现 THEN 请求,我无法以正确的顺序获取它。 我错过了什么?
通过使用Promise.all(promises),我传递了完整的数组,但query.get 一次只能处理一个字符串!
更新 2:
功能
query.get("xWMyZ4YEGZ", {
success: function(gameScore) {
// The object was retrieved successfully.
},
error: function(object, error) {
// The object was not retrieved successfully.
// error is a Parse.Error with an error code and message.
}
});
【问题讨论】:
-
更新了我的答案以显示当时如何处理一个 ID,但我建议不要这样做,而是尝试使用
userPics_query.get解决问题