不是要求Parse.com问题的最佳时刻,但我必须继续使用解析器几个月。这是我的问题:
在Parse.com中,我使用的是Javascript SDK。 我有一个数组指向类User的指针:
[{userObject1.id}, {userObject2.id}, {userObject3.id}]
当我只有要删除的对象的id时,如何从数组中删除对象{userObject2}?
目前我通过使用array.splice(indexDelete,1);执行 forEach 循环来删除内部对象。我正在寻找更好的解决方案。
var wasSomethingDeleted = 0;
var MyParseFollow = Parse.Object.extend('Follow');
var query = new Parse.Query(MyParseFollow);
query.equalTo("user", channelUser); // fetch all followers
query.first().then(
function (Follow) {
if (Follow){
if (Follow.get("followedBy").length > 0){ // check if there is any follower
var listOfFollowers = Follow.get("followedBy"); // get the array of userObjects of followers
var indexDelete = 0;
listOfFollowers.forEach(function(user){
if( user.id == Parse.User.current().id ){ // I want to remove the current authenticated user
wasSomethingDeleted++;
listOfFollowers.splice(indexDelete, 1); // remove the element
}else{
indexDelete++;
}
});
if( wasSomethingDeleted > 0 ){
Follow.set('followedBy', listOfFollowers); // save new updated array list of followers
Follow.save();
}
}
}
}
);
答案 0 :(得分:0)
这应该做..使用2查询用户和你的类,以便从数组中只删除一个用户对象。
您可以进行测试,然后进行调整,以便在关注者列表中添加“forEach”。您可以在关注者上执行forEach循环,将每个用户对象提取到一个用户数组,然后在整个数组上调用remove,一步一步将它们从MPFollow.followedBy数组中删除。
var qu = new Parse.Query(Parse.User);
var _user;
var folRequest = Parse.Object.extend("MPFollow");
var qcr = new Parse.Query(folRequest);
qu.get(userId).then(function(user) {
if (typeof user === "undefined") {
return Parse.Promise.error("DNF user to remove");
} else{
_user = user;
return qcr.get(MPFollowId);
}
}).then(function(mpf){
_mpf = mpf;
_mpf.remove("followedBy", _user);
console.log('ChnReq UP rm user : ' + _chan.id + ' ' + _user.id);
return _mpf.save();
}).then(function(){
console.log('remov prcss complete');
},function(e) {
console.log('ERR ' + e.code + ' ' +e.message);
});
答案 1 :(得分:0)
建议:我认为您要从列表中删除当前登录用户,或者如果要从列表中删除任何用户。那么为什么你从服务器上获取它然后删除它,你可以像
一样使用它query.whereNotEqualTo("objectId", user.id);
这将有助于您删除任何不需要的用户。
答案 2 :(得分:0)
根据Parse js guide的文档。试试这个
var wasSomethingDeleted = 0;
var MyParseFollow = Parse.Object.extend('Follow');
var query = new Parse.Query(MyParseFollow);
query.equalTo("user", channelUser); // fetch all followers
query.first().then(
function (Follow) {
if (Follow){
if (Follow.get("followedBy").length > 0){ // check if there is any follower
Follow.remove('followedBy', {Parse.User.current().id}); //remove all instances of the current user from followedBy field.
Follow.save();
}
}
}
);
答案 3 :(得分:-1)
我相信这应该有效
var User = Parse.Object.extend("User");
var user = new User();
user.id = "UserID1";
user.destroy().then(console.log.bind(console))
或
var user = User.createWithoutData("UserID1");
user.destroy().then(console.log.bind(console))
由于您有多个用户ID,因此您可能需要使用Parse.Object.destroyAll
方法