我在解析这两个类



这是我的TestItem类,它具有可用的项目。然后,我有我的UserFavorites类:



它具有用户喜欢的项目。如您所见,布法罗华夫薯条和虾宝男孩都在这两个班上。在UserFavs中,我有一个从UserFav中的项目到TestItem中的项目的指针,因此我可以将它们匹配以达到与此问题无关的目的。我的问题是,每天删除TestItem类中的项目,并添加新的项目。因此,testItem中的指针不再有效。所以我不能再匹配他们。如您所见,我手动更新了Shrimp Po Boy的指针,只是为了说明这一点。我的JavaScript代码需要一些帮助,该帮助将TestItem中的项目与UserFav中的项目进行匹配。然后更新UserFav中的指针以匹配TestItem类中的objectId。我希望如果不要求我澄清这一点也是有道理的。也可能有多个用户喜欢同一项,因此我需要它来更新两个指向TestItem类的指针。

到目前为止,她正在与我合作:

Parse.Cloud.define("updateUserFavPointerToTestItem", function(request, response) {

var TestItem = Parse.Object.extend("TestItem");
var UserFav = Parse.Object.extend("UserFavourite");
var testItemsQuery = new Parse.Query(TestItem);
var userFavoritesQuery = new Parse.Query(UserFav);

testItemsQuery.find().then(function(testItemRes) {
    for (var i = 0; i < testItemRes.lenght; i++) {
        var item = testItemRes.get('item');
        userFavoritesQuery.equalTo('item', item);
        userFavoritesQuery.then(function(userFavoritesRes) {
            for (var i2 = 0; i2 < userFavoritesRes.length; i2++) {
                //update the testItem pointer here
                //but this doesnt work, I think its because the query is async
                //But I am using .then, so maybe I need some promises?
            }
        });
    }
});
});


非常感谢您的事先帮助!

最佳答案

有两件事:


您必须为每次迭代创建新的查询实例。由于所有这些都是异步发生的,因此尝试重用同一查询对象并重置“项目”肯定会导致问题。
查询对象本身不是“可以那么”的。也许您忘了在那里写“ find()”?
使用正确的对象更新userFavorite的testItem字段
更新项目后,将其推送到数组,以便可以使用saveAll


代码示例:

Parse.Cloud.define(
    "updateUserFavPointerToTestItem",
    function(request, response) {

    var TestItem = Parse.Object.extend("TestItem");
    var UserFav = Parse.Object.extend("UserFavourite");
    var testItemsQuery = new Parse.Query(TestItem);

    var userFavoriteObjectsToSave = [];

    testItemsQuery.each(function(testItem) {
        var item = testItem.get('item');
        var userFavoritesQuery = new Parse.Query(UserFav);
        userFavoritesQuery.equalTo('item', item);
        return userFavoritesQuery.each(function(userFavorite) {
            userFavorite.set('testItem', testItemRes);
            userFavoriteObjectsToSave.push(userFavorite);
        });
    }).then(function () {
        Parse.Object.saveAll(userFavoriteObjectsToSave);
    });
});

关于javascript - Javascript-查询parse.com的匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25875210/

10-11 06:32