如何检查对象是否已存在?

时间:2015-06-06 06:38:56

标签: node.js parse-platform promise cloud-code

我正在从产品Feed中导入产品。一个产品有一个设计师和一个类别,我把它们分成了几个表(Parse classes)。

现在的问题是我需要检查一个类别或设计师是否已经存在,所以我不需要创建它。

目前我没有检查它,导致我的数据库中有很多重复项。如果我签入了DB,它将是异步的但我实际上需要它以某种方式顺序(序列化)..任何想法?

for (var i=1;i<productsFromFeed.length;i++){
    productId = parseInt(productsFromFeed[i][1]);

        if (productId > lastProduct.get("productId")){
            console.log("Product is new: " + productId);

            var Designer = Parse.Object.extend("Designer");
            var Product = Parse.Object.extend("Product");
            var Category = Parse.Object.extend("Category");

            var designer = new Designer();
            designer.set("name", productsFromFeed[i][4]);
            designer.set("designerId", parseInt(productsFromFeed[i][5]));

            var category = new Category();
            category.set("name", productsFromFeed[i][6]);
            category.set("categoryId", parseInt(productsFromFeed[i][7]));

            var newProduct = new Product();
            newProduct.set("productName", productsFromFeed[i][0]);
            newProduct.set("productId", parseInt(productsFromFeed[i][1]));
            newProduct.set("designer", designer);
            newProduct.set("category", category);

            objects.push(newProduct);

        } else {
            console.log("Product already exists: " + productId);
        }
    }

1 个答案:

答案 0 :(得分:0)

它不需要是连续的,你只需要处理你想要做的事情的异步性 - 使用promises。

您可以运行查询以提前查找所有内容并在本地缓存它们,这仅在您进行批量导入时才有用,您的代码看起来像是一个小批量导入,但目前尚不清楚这是否是一个有效的方法。

在您的情况下,只需运行您的查询并使用promises将每个逻辑阶段链接在一起。请注意,对于循环,您可以将生成的promises放入一个数组中,并等待它们全部完成。